使用.sql.gz文件还原数据库时,gunzip附近的SQL语法错误

Vik*_*ain 12 mysql database windows phpmyadmin database-restore

我正在尝试使用.sql.gz文件恢复mysql数据库.我正在使用mySql控制台来运行命令,因为文件大小对于phpMyAdmin来说太大了.我正在使用的命令是

gunzip C:/Vik/Gya/Source/beed_2013-04-06.sql.gz | mysql -u root -p bd
Run Code Online (Sandbox Code Playgroud)

其中root是用户ID.root没有密码.bd是我要导入的数据库.mysql正在我的本地计算机上运行(Windows 8).我有一个wamp设置.

这是我得到的错误:

错误1064(42000):您的SQL语法有错误; 检查与MySQL服务器版本对应的手册,以便'gunzip C:/Vikalp/Gyankosh/Source/beedictionary_2013-04-06.sql | mysql -u root -p'在第1行附近使用正确的语法.

任何帮助将不胜感激.

谢谢和问候,Vikalp Jain

小智 69

你需要-c选项(输出到stdout)

gunzip -c xxx.sql.gz |mysql -u root -p
Run Code Online (Sandbox Code Playgroud)

  • 同样有趣的是,`gunzip`只是`gzip -d`或`gzip --decompress`的同义词,所以命令可以是`gzip -dc file.sql.gz | mysql -u user -p dbname` (4认同)
  • 这是为什么`gunzip C:/Vik/Gya/Source/beed_2013-04-06.sql.gz |的正确答案.mysql -u root -p bd`将无法从命令行运行,但实际选择的答案是正确的,错误消息和实际问题表明用户已登录到MySQL,这就是命令没有的原因工作.然而,这个答案是如何从gunzip的命令行管道正确地做事. (3认同)

小智 22

虽然Kisoft的回答是正确的,但我只想指出你不需要-c,它可以正常工作.此命令将解压缩数据库转储并同时将其导入数据库.

gunzip < output.sql.gz | mysql -u <username> -p<password> <database>
Run Code Online (Sandbox Code Playgroud)


Álv*_*lez 4

如果您键入gunzip并收到抱怨gunzip 的SQL 语法错误,则您已经登录到mysql 控制台。mysql 控制台不是通用 shell!

您正在使用 Windows,我怀疑您尚未在计算机中安装 gzip(它不是内置实用程序)。它是一个经典的 Unix 工具,但您可以找到适用于Windows 的二进制文件。安装它并通过一些调整运行原始命令:

  1. 确保您处于 Windows 提示符 ( C:\>)

  2. 将gunzip 结果重定向到标准输出而不是文件:

    gunzip --stdout C:/Vik/Gya/Source/beed_2013-04-06.sql.gz | mysql -u root -p bd
    
    Run Code Online (Sandbox Code Playgroud)

或者,如果您先解压缩它,则可以从 MySQL promt ( mysql>) 中运行转储(您不需要专门的命令行 gzip,大多数 GUI 归档程序(例如7-Zip)都支持这种格式):

mysql> \. C:/Vikalp/Gyankosh/Source/beedictionary_2013-04-06.sql
Run Code Online (Sandbox Code Playgroud)

  • 这是一个简单的解决方案,如果您的备份很小,它就可以工作,但不需要将文件压缩到磁盘上。就像 CRUSADER 所说的那样通过管道连接到 mysql 。 (3认同)