在 MySQL 中導(dǎo)入數(shù)據(jù)庫(kù)通常有兩種常用方法:使用mysql命令行工具導(dǎo)入 SQL 文件,或通過(guò)source命令在 MySQL 交互環(huán)境中導(dǎo)入。以下是詳細(xì)步驟:
適用于在終端直接執(zhí)行,無(wú)需先登錄 MySQL。
mysql -u 用戶名 -p 數(shù)據(jù)庫(kù)名 < 導(dǎo)入的SQL文件路徑
-
確保目標(biāo)數(shù)據(jù)庫(kù)已存在(如果 SQL 文件包含建庫(kù)語(yǔ)句可跳過(guò)此步):
mysql -u root -p
CREATE DATABASE IF NOT EXISTS 目標(biāo)數(shù)據(jù)庫(kù)名;
exit;
-
執(zhí)行導(dǎo)入命令:
mysql -u root -p mydb < /home/user/backup.sql
-
輸入密碼后開(kāi)始導(dǎo)入,導(dǎo)入過(guò)程中無(wú)輸出,完成后直接返回終端。
適用于已登錄 MySQL 的情況。
-
登錄 MySQL 并切換到目標(biāo)數(shù)據(jù)庫(kù):
mysql -u root -p
use 目標(biāo)數(shù)據(jù)庫(kù)名;
-
執(zhí)行 source 命令導(dǎo)入:
source /home/user/backup.sql;
-
注意 SQL 文件路徑需使用絕對(duì)路徑,導(dǎo)入過(guò)程會(huì)顯示執(zhí)行日志。
-
導(dǎo)入大文件時(shí)超時(shí):編輯 MySQL 配置文件(如my.cnf),增加以下參數(shù)后重啟服務(wù):
[mysqld]
max_allowed_packet=100M # 根據(jù)文件大小調(diào)整
wait_timeout=600
-
權(quán)限錯(cuò)誤:確保執(zhí)行導(dǎo)入的用戶有目標(biāo)數(shù)據(jù)庫(kù)的CREATE、INSERT等權(quán)限:
GRANT ALL PRIVILEGES ON 目標(biāo)數(shù)據(jù)庫(kù)名.* TO '用戶名'@'localhost';
FLUSH PRIVILEGES;
-
SQL 文件編碼問(wèn)題:導(dǎo)入時(shí)指定編碼(如 UTF-8):
mysql -u root -p --default-character-set=utf8 mydb < backup.sql
-
導(dǎo)入的 SQL 文件需是完整的數(shù)據(jù)庫(kù)備份(包含
CREATE TABLE、INSERT等語(yǔ)句)。
-
導(dǎo)入前建議備份目標(biāo)數(shù)據(jù)庫(kù),避免數(shù)據(jù)覆蓋。
-
對(duì)于超大文件(GB 級(jí)),可考慮分塊導(dǎo)入或使用
mysqldump的對(duì)應(yīng)參數(shù)優(yōu)化。