2012-02-18 37 views
6

我有一個PHP腳本解析XML文件,並創建一個看起來像這樣的大型SQL文件:如何導入大型SQL文件到MySQL表

INSERT IGNORE INTO table(field1,field2,field3...) 
VALUES ("value1","value2",int1...), 
("value1","value2",int1)...etc 

這個文件加起來超過20GB(我已經測試過一個2.5GB的文件,但它也失敗了)。

我已經試過類似的命令:

的mysql -u根-p table_name的< /var/www/bigfile.sql

這適用於較小的文件,說50MB左右。但它不適用於較大的文件。

我想:

mysql> source /var/www/bigfile.sql 

我也試過,但mysqlimport的這甚至不會正確地處理我的文件。

我不斷收到寫着

ERROR 2006 (HY000): MySQL server has gone away 

偏偏大約一個錯誤。我開始執行後30秒。

我將allowed_max_packet設置爲4GB,但使用SHOW VARIABLES驗證時只顯示1GB。

有沒有辦法做到這一點,而不會浪費另外10個小時?

回答

2

嘗試將文件拆分爲多個INSERT查詢。

+0

爲什麼我不這麼想...... – nick 2012-02-18 02:04:30

+0

剛剛在5分鐘左右導入了2.5GB。感謝您的建議! – nick 2012-02-18 03:15:21

+0

也看看my.cnf中的'max_allowed_pa​​cket = 16M'設置 - 將它設置爲非常大的像16M將允許更大的單插入 – 2012-02-18 03:49:27