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)文章
innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別詳解
隔離是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面這篇文章主要給大家介紹了關(guān)于innodb如何巧妙的實(shí)現(xiàn)事務(wù)隔離級(jí)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11
mysql如何將sql查詢的結(jié)果以百分比展示出來(lái)
這篇文章主要給大家介紹了關(guān)于mysql如何將sql查詢的結(jié)果以百分比展示出來(lái)的相關(guān)資料,用到了MySQL字符串處理中的兩個(gè)函數(shù)concat()和left()實(shí)現(xiàn)查詢結(jié)果以百分比顯示,需要的朋友可以參考下2023-08-08
Java實(shí)現(xiàn)獲得MySQL數(shù)據(jù)庫(kù)中所有表的記錄總數(shù)可行方法
可以通過(guò)SELECT COUNT(*) FROM table_name查詢某個(gè)表中有多少條記錄。本文給出兩種可行的Java程序查詢所有別的記錄方法,感興趣朋友可以了解下2013-06-06
mysql binlog日志自動(dòng)清理及手動(dòng)刪除
本文主要介紹了mysql binlog日志自動(dòng)清理及手動(dòng)刪除,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法
這篇文章主要介紹了win2008 R2服務(wù)器下修改MySQL 5.5數(shù)據(jù)庫(kù)data目錄的方法,需要的朋友可以參考下2016-04-04
Mysql聯(lián)表update數(shù)據(jù)的示例詳解
這篇文章主要介紹了Mysql聯(lián)表update數(shù)據(jù)的示例詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11

