MySQL命令行導(dǎo)入SQL文件的流程步驟
1. 使用命令行直接導(dǎo)入
mysql -u your_username -p your_database < your_file.sql
2.分割大型 SQL 文件
如果 SQL 文件非常大,可以將其分割成多個(gè)小文件:
# 使用 split 命令分割文件(每 1000 行一個(gè)文件) split -l 1000 large_file.sql chunk_ # 逐個(gè)導(dǎo)入分割后的文件 for file in chunk_*; do echo "Importing $file..." mysql -u your_username -p your_database < $file done
3.使用進(jìn)度顯示工具(推薦)
對(duì)于大型 SQL 文件,可以使用 pv 命令(Pipe Viewer)來(lái)顯示導(dǎo)入進(jìn)度:
# 安裝 pv(如果尚未安裝) sudo apt-get install pv # Ubuntu/Debian sudo yum install pv # CentOS/RHEL # 使用 pv 導(dǎo)入 pv your_file.sql | mysql -u your_username -p your_database
使用pv監(jiān)控導(dǎo)入進(jìn)度
安裝好后,你可以用下面這個(gè)命令來(lái)導(dǎo)入并查看進(jìn)度:
pv ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh
執(zhí)行后,pv會(huì)顯示一個(gè)進(jìn)度條,包括已用時(shí)間、進(jìn)度百分比、數(shù)據(jù)傳輸速率和預(yù)計(jì)剩余時(shí)間(ETA)。
顯示更多信息
如果你想看更詳細(xì)的信息,可以加上-pterb參數(shù):
pv -pterb ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh
-p:顯示進(jìn)度條-t:顯示已用時(shí)間-e:顯示預(yù)計(jì)剩余時(shí)間(ETA)-r:顯示數(shù)據(jù)傳輸速率-b:顯示已傳輸?shù)淖止?jié)數(shù)
如果暫時(shí)無(wú)法安裝pv
| 查看MySQL進(jìn)程狀態(tài) | mysql -u user -p -e 'SHOW PROCESSLIST;' | 查看當(dāng)前執(zhí)行的SQL語(yǔ)句和狀態(tài) |
4.其他優(yōu)化點(diǎn)
先清空數(shù)據(jù)庫(kù)再導(dǎo)入 是一個(gè)非常合理且推薦的做法,尤其是在你反復(fù)遇到 Table already exists 錯(cuò)誤和查詢中斷的情況下。這可以確保一個(gè)干凈的初始狀態(tài),避免很多沖突。
但是,請(qǐng)務(wù)必謹(jǐn)慎操作,因?yàn)榍蹇諗?shù)據(jù)庫(kù)會(huì)永久刪除所有現(xiàn)有數(shù)據(jù)。
非常重要:首先備份?。ㄈ绻阈枰A舢?dāng)前數(shù)據(jù))
如果你當(dāng)前數(shù)據(jù)庫(kù)里有需要保留的數(shù)據(jù),請(qǐng)先備份:
# 使用 mysqldump 備份整個(gè)數(shù)據(jù)庫(kù) mysqldump -u your_username -p your_database > backup_before_import.sql
或者只備份某些重要的表。
使用 MySQL 命令(逐行執(zhí)行)
-- 方法A:
-- 1. 連接到 MySQL
mysql -u your_username -p
-- 2. 選擇你的數(shù)據(jù)庫(kù)
USE your_database_name;
-- 3. 禁用外鍵檢查,避免刪除時(shí)因外鍵約束而失敗
SET FOREIGN_KEY_CHECKS = 0;
-- 4. 生成并執(zhí)行刪除所有表的命令
-- 這會(huì)查詢出所有表名,并生成一系列的 DROP TABLE 語(yǔ)句
SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'your_database_name';
-- 【注意】上面一句只會(huì)生成命令,不會(huì)執(zhí)行。你需要復(fù)制輸出的結(jié)果,然后粘貼執(zhí)行。
-- 或者使用以下更自動(dòng)化的方法:-- 方法B:使用命令行工具(更高效,一鍵完成)
# 此命令會(huì)直接清空整個(gè)數(shù)據(jù)庫(kù)
mysql -u your_username -p -e "SET FOREIGN_KEY_CHECKS = 0; \
SELECT CONCAT('DROP TABLE IF EXISTS \`', table_name, '\`;') \
FROM information_schema.tables \
WHERE table_schema = 'your_database_name'" | \
grep '^DROP' | \
mysql -u your_username -p your_database_name一句更強(qiáng)力的清空命令(包括視圖和存儲(chǔ)過(guò)程):
# 1. 刪除整個(gè)數(shù)據(jù)庫(kù)(這會(huì)刪除所有數(shù)據(jù)和表結(jié)構(gòu)) mysql -u your_username -p -e "DROP DATABASE your_database_name;" # 2. 創(chuàng)建一個(gè)新的空數(shù)據(jù)庫(kù) mysql -u your_username -p -e "CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
這是最徹底的方法,推薦使用。
以上就是MySQL命令行導(dǎo)入SQL文件的流程步驟的詳細(xì)內(nèi)容,更多關(guān)于MySQL命令行導(dǎo)入SQL文件的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解
這篇文章主要為大家介紹了MySL實(shí)現(xiàn)如等級(jí)成色等特殊順序的排序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾掉重復(fù)數(shù)據(jù)
這篇文章主要介紹關(guān)于MySQL 大批量插入時(shí)如何過(guò)濾重復(fù)數(shù)據(jù),比如線上庫(kù)有6個(gè)表存在重復(fù)數(shù)據(jù),其中2個(gè)表比較大,96萬(wàn)+和30萬(wàn)+,因?yàn)橹疤幚磉^(guò)相同的問(wèn)題,就直接拿來(lái)了上次的Python去重腳本,腳本很簡(jiǎn)單,就是連接數(shù)據(jù)庫(kù),查出來(lái)重復(fù)數(shù)據(jù),循環(huán)刪除,需要的朋友可以參考下2021-09-09
MySql報(bào)錯(cuò):Duplicate entry ‘10‘ for key&nbs
經(jīng)常遇到這個(gè)問(wèn)題,今天我把這個(gè)問(wèn)題記錄下來(lái),以后如果有其他人遇到相同的問(wèn)題,不至于困惑,在操作數(shù)據(jù)庫(kù)的時(shí)候,經(jīng)常會(huì)出現(xiàn)Duplicate entry ‘10’ for key 'PRIMARY’這樣的報(bào)錯(cuò),本文將給大家講講如何解決這個(gè)問(wèn)題,需要的朋友可以參考下2023-10-10
windows下MySQL數(shù)據(jù)庫(kù)移動(dòng)到其它盤
大家好,本篇文章主要講的是windows下MySQL數(shù)據(jù)庫(kù)移動(dòng)到其它盤,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏2021-12-12
MySQL進(jìn)行g(shù)roup by字段返回大量異常結(jié)果的問(wèn)題解決
本文主要介紹了MySQL進(jìn)行g(shù)roup by字段返回大量異常結(jié)果的問(wèn)題解決,文中通過(guò)代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-05-05
MySQL數(shù)據(jù)庫(kù)查詢之多表查詢總結(jié)
最近遇到了多表查詢的需求,也稱為關(guān)聯(lián)查詢,指兩個(gè)或更多個(gè)表一起完成查詢操作,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)查詢之多表查詢的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08

