2011-06-15 61 views
4

我想在Windows 7機器上導入一個350MB MySQL .sql文件。我通常通過使用在Windows上用Force導入大型MySQL .sql文件

mysql -uuser -p -e "source c:/path/to/file.sql" database 

因爲<在Powershell中不起作用。

我的.sql文件這次有錯誤。我寧願跳過不良行並繼續導入。我如何強制導入到Windows上繼續?

在Unix/Linux上的系統,我可以用

mysql --force ... < file.sql 

但--force似乎並不與-e 「源...」 命令(可以理解的)工作。

謝謝, 邁克

+0

我想從我與主機選項(H)的Linux中導入。雖然它可能會起作用,但我更願意在本地進行此操作。 – getWeberForStackExchange 2011-06-15 22:35:34

+0

從linux電腦導入效果很好。儘管仍然只對Windows有興趣! – getWeberForStackExchange 2011-06-15 23:11:59

回答

11

你可能會必須有PowerShell的標準控制檯,以便使用<正確執行此操作。從技術上講,您可以使用get-content並將輸出傳輸到mysql,但我總是發現速度很慢,並且它以某種方式仍將文件內容保留在Powershell會話的內存中。

這是我如何從Powershell命令提示符執行它(更改文件路徑包含空格證明內報價,以防萬一):

cmd /C 'mysql -uuser -p --force < "C:\path\with spaces\to\file.sql"' 

[GC]::collect()會顯然清楚它的內存,但無論如何你都不能這樣做。當涉及到mysqlmysqldump,我不打擾Powershell。在>中使用的默認編碼是Unicode,使轉儲文件在Powershell中的大小是出自cmd的兩倍,除非您記得寫| out-file dump.sql -enc ascii而不是> dump.sql

+0

我注意到了Get-Content和Powershell。在內存耗盡之前,我使用了1.4 GB的內存。 – getWeberForStackExchange 2011-06-15 23:55:22

+0

順便說一句,你的解決方案完美的作品,謝謝。 – getWeberForStackExchange 2011-06-15 23:58:19

+0

對我來說 - 無論我做什麼,--force都無法工作。它停止 – 2013-10-13 10:39:31