簡體   English   中英

通過命令行將大型sql文件導入MySql

[英]Importing large sql file to MySql via command line

我正在嘗試通過Ubuntu中的命令行將大約300MB的sql文件導入MySql。 我用了

source /var/www/myfile.sql;

現在它顯示了看似無限的行:

Query OK, 1 row affected (0.03 sec)

然而它現在已經運行了一段時間。 我之前沒有導入這么大的文件所以我只是想知道這是否正常,如果進程停止或有一些錯誤,這將顯示在命令行中還是這個進程將無限期地繼續?

謝謝

您可以使用標准輸入導入.sql文件,如下所示:

mysql -u <user> -p<password> <dbname> < file.sql

注意: <-p><password>之間不應該有空格

參考: http//dev.mysql.com/doc/refman/5.0/en/mysql-batch-commands.html

建議編輯的注意事項:建議的編輯使用內聯密碼參數稍微改變了這個答案。 我可以推薦它用於腳本,但是你應該知道,當你直接在參數( -p<password> )中寫密碼時,它可以通過shell歷史記錄緩存,向任何能夠讀取歷史文件的人顯示你的密碼。 -p要求您通過標准輸入輸入密碼。

關於導入大文件所花時間的人最重要的是需要更多時間是因為mysql的默認設置是“autocommit = true”,你必須在導入文件之前將其設置為off,然后檢查導入如何像gem一樣工作...

首先打開MySQL:

mysql -u root -p

然后,您只需要執行以下操作:

mysql>use your_db

mysql>SET autocommit=0 ; source the_sql_file.sql ; COMMIT ;

+1到@MartinNuc,您可以在批處理模式下運行mysql客戶端,然后您將看不到長行“OK”行。

導入給定SQL文件所需的時間取決於很多事情。 不僅是文件的大小,還有文件的類型,服務器服務器的強大程度,以及同時運行的其他內容。

@MartinNuc說他可以在4-5分鍾內加載4GB的SQL,但我已經運行了0.5 GB的SQL文件並且在較小的服務器上需要45分鍾。

我們無法猜測在服務器上運行SQL腳本需要多長時間。


你的評論,

@MartinNuc是正確的你可以選擇讓mysql客戶端打印每個語句。 或者你可以打開第二個會話並運行mysql> SHOW PROCESSLIST來查看正在運行的內容。 但是你可能更感興趣的是“完成百分比”數字或估計完成剩余陳述需要多長時間。

對不起,沒有這樣的功能。 mysql客戶端不知道運行以后的語句需要多長時間,甚至不知道有多少語句。 因此,無法對完成所需的時間進行有意義的估算。

我用於大型sql還原的解決方案是mysqldumpsplitter腳本。 我將sql.gz拆分為單獨的表。 然后加載類似mysql workbench的東西並將其作為恢復到所需的模式進行處理。

這是腳本https://github.com/kedarvj/mysqldumpsplitter

這適用於較大的sql恢復,我使用的一個站點上的平均值是2.5gb sql.gz文件,20GB未壓縮,並且一旦完全恢復就會達到~100Gb

通過命令行將大型sql文件導入MySql

  1. 第一個下載文件。
  2. 粘貼文件在家里。
  3. 在終端中使用以下命令(CMD)
  4. 語法:mysql -u username -p databsename <file.sql

示例:mysql -u root -p aanew <aanew.sql

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM