我試圖將大型SQL文件(> 2.5 Gb)還原到Windows上的MySQL數據庫中。導入非常大的SQL文件(MySQL)時的單次提交
我無法編輯這些文件,以便在文件的開頭添加文字(如提高導入時間所需的文件),例如SET autocommit=0;
。
我也無法使用source
,因爲這會輸出到屏幕(非常慢),即使文件中有任何錯誤,執行也會繼續。例如:
mysql> CREATE DATABASE IF NOT EXISTS dbname;
mysql> USE dbname;
mysql> SET autocommit=0;
mysql> source file.sql;
mysql> COMMIT;
是否可以在導入僅適用於當前會話的SQL文件之前和之後運行任意命令?我已經試過兩個以下,而在Windows上既不工作(在這兩種情況下,第二操作被忽略):
mysql -u username -p -e "SET autocommit=0;" dbname < file.sql
,或者
mysql -u username -p < initial_commands.sql < file.sql
如果可能的話,我不想改變全球autocommit
設置每次我這樣做,然後不得不記得改回它(也不知道這將工作沒有最後的COMMIT;
)。
也許有一種方法可以使用BEGIN ... COMMIT;
而不是關閉autocommit?
我會很高興有人做任何建議這樣的事情!
非常好,謝謝。我沒有想到你可以在窗戶上使用管道和相當於'cat'的東西! – isedwards