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

6

我想在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

但是使用-e "source ..."命令时,--force似乎无法工作(可以理解)。

谢谢, Mike


我正在尝试使用主机选项(-h)从我的Linux框导入。虽然它可能会起作用,但我更喜欢在本地执行此操作。 - getWeberForStackExchange
从Linux计算机导入工作得很好。不过,我仍然对仅适用于Windows的解决方案感兴趣! - getWeberForStackExchange
2个回答

14

为了正确使用 <,你可能需要让Powershell在标准控制台中执行。理论上,你可以使用get-content并将输出导入mysql,但我发现这种方法速度较慢,并且它仍然会在Powershell会话的内存中保留文件内容。

下面是我在Powershell提示符中执行它的方式(更改了文件路径以包括空格以演示内部引用,以防万一):

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

[GC]::collect() 显然可以清理内存,但在任务完成之前不能这样做。在处理 mysqlmysqldump 时,我不使用 Powershell。在 Powershell 中,> 的默认编码是 Unicode,使得导出的 dump 文件大小是在 cmd 中的两倍,除非你记得写成 | out-file dump.sql -enc ascii 而不是 > dump.sql


我也注意到了使用Get-Content和Powershell时的这个问题。在内存耗尽之前,我的RAM已经使用了1.4 GB。 - getWeberForStackExchange
无论我做什么,对我来说--force都不起作用。它会停止。 - Satya Prakash
1
@SatyaPrakash:--force 参数会让程序在遇到错误时继续执行,但可能有某些类别的错误无法被忽略。你可能需要实际修复错误而不是试图忽略它。 - Joel B Fant
是的,对我来说问题出在phpmyadmin无法正确导出。我使用mysql dump进行导入和导出,使用mysql解决了这个问题。 - Satya Prakash

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接