MySQL命令行導(dǎo)入SQL文件的流程步驟
1. 使用命令行直接導(dǎo)入
mysql -u your_username -p your_database < your_file.sql
2.分割大型 SQL 文件
如果 SQL 文件非常大,可以將其分割成多個小文件:
# 使用 split 命令分割文件(每 1000 行一個文件) split -l 1000 large_file.sql chunk_ # 逐個導(dǎo)入分割后的文件 for file in chunk_*; do echo "Importing $file..." mysql -u your_username -p your_database < $file done
3.使用進度顯示工具(推薦)
對于大型 SQL 文件,可以使用 pv 命令(Pipe Viewer)來顯示導(dǎo)入進度:
# 安裝 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)入進度
安裝好后,你可以用下面這個命令來導(dǎo)入并查看進度:
pv ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh
執(zhí)行后,pv會顯示一個進度條,包括已用時間、進度百分比、數(shù)據(jù)傳輸速率和預(yù)計剩余時間(ETA)。
顯示更多信息
如果你想看更詳細的信息,可以加上-pterb參數(shù):
pv -pterb ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh
-p:顯示進度條-t:顯示已用時間-e:顯示預(yù)計剩余時間(ETA)-r:顯示數(shù)據(jù)傳輸速率-b:顯示已傳輸?shù)淖止?jié)數(shù)
如果暫時無法安裝pv
| 查看MySQL進程狀態(tài) | mysql -u user -p -e 'SHOW PROCESSLIST;' | 查看當(dāng)前執(zhí)行的SQL語句和狀態(tài) |
4.其他優(yōu)化點
先清空數(shù)據(jù)庫再導(dǎo)入 是一個非常合理且推薦的做法,尤其是在你反復(fù)遇到 Table already exists 錯誤和查詢中斷的情況下。這可以確保一個干凈的初始狀態(tài),避免很多沖突。
但是,請務(wù)必謹慎操作,因為清空數(shù)據(jù)庫會永久刪除所有現(xiàn)有數(shù)據(jù)。
非常重要:首先備份?。ㄈ绻阈枰A舢?dāng)前數(shù)據(jù))
如果你當(dāng)前數(shù)據(jù)庫里有需要保留的數(shù)據(jù),請先備份:
# 使用 mysqldump 備份整個數(shù)據(jù)庫 mysqldump -u your_username -p your_database > backup_before_import.sql
或者只備份某些重要的表。
使用 MySQL 命令(逐行執(zhí)行)
-- 方法A:
-- 1. 連接到 MySQL
mysql -u your_username -p
-- 2. 選擇你的數(shù)據(jù)庫
USE your_database_name;
-- 3. 禁用外鍵檢查,避免刪除時因外鍵約束而失敗
SET FOREIGN_KEY_CHECKS = 0;
-- 4. 生成并執(zhí)行刪除所有表的命令
-- 這會查詢出所有表名,并生成一系列的 DROP TABLE 語句
SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'your_database_name';
-- 【注意】上面一句只會生成命令,不會執(zhí)行。你需要復(fù)制輸出的結(jié)果,然后粘貼執(zhí)行。
-- 或者使用以下更自動化的方法:-- 方法B:使用命令行工具(更高效,一鍵完成)
# 此命令會直接清空整個數(shù)據(jù)庫
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一句更強力的清空命令(包括視圖和存儲過程):
# 1. 刪除整個數(shù)據(jù)庫(這會刪除所有數(shù)據(jù)和表結(jié)構(gòu)) mysql -u your_username -p -e "DROP DATABASE your_database_name;" # 2. 創(chuàng)建一個新的空數(shù)據(jù)庫 mysql -u your_username -p -e "CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
這是最徹底的方法,推薦使用。
以上就是MySQL命令行導(dǎo)入SQL文件的流程步驟的詳細內(nèi)容,更多關(guān)于MySQL命令行導(dǎo)入SQL文件的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
innodb如何巧妙的實現(xiàn)事務(wù)隔離級別詳解
隔離是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面這篇文章主要給大家介紹了關(guān)于innodb如何巧妙的實現(xiàn)事務(wù)隔離級別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下2018-11-11
Java實現(xiàn)獲得MySQL數(shù)據(jù)庫中所有表的記錄總數(shù)可行方法
可以通過SELECT COUNT(*) FROM table_name查詢某個表中有多少條記錄。本文給出兩種可行的Java程序查詢所有別的記錄方法,感興趣朋友可以了解下2013-06-06
win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫data目錄的方法
這篇文章主要介紹了win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫data目錄的方法,需要的朋友可以參考下2016-04-04
Mysql聯(lián)表update數(shù)據(jù)的示例詳解
這篇文章主要介紹了Mysql聯(lián)表update數(shù)據(jù)的示例詳解,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11

