一尘不染

强制在Windows上导入大型MySQL .sql文件

sql

我想在Windows 7计算机上导入350MB的MySQL .sql文件。我通常通过使用

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

因为<在Powershell中不起作用。

我的.sql文件这次出现错误。我宁愿只跳过错误的行并继续导入。如何强制在Windows上继续导入?

在基于Unix / Linux的系统上,我可以使用

mysql --force ... < file.sql

但是–force似乎无法与-e“ source …”命令一起使用(可以理解的是)。

谢谢,迈克


阅读 188

收藏
2021-03-10

共1个答案

一尘不染

为了<正确使用,您可能必须让Powershell在标准控制台中执行此操作。从技术上讲,您可以使用get- content输出并将其通过管道传输到mysql,但是我一直发现这样做很慢,而且它仍然以某种方式将文件内容保留在Powershell会话的内存中。

这就是我在Powershell提示符下执行的方式(已更改文件路径,以包括空格来演示内部引号,以防万一):

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

[GC]::collect() 显然会清除内存中的内容,但是直到完成后您才能执行此操作。关于mysqland
mysqldump,我不必理会Powershell。所使用的默认编码>是Unicode,使转储文件的大小超出Powershell的两倍,cmd除非您记得编写| out-file dump.sql -enc ascii而不是> dump.sql

2021-03-10