通过管道 gunzip 和 mysql 将转储文件导入 gunzip 中

通过管道 gunzip 和 mysql 将转储文件导入 gunzip 中

我有一个.gz sql 转储文件(例如:foo.sql.gz),我想使用经典的 mysql 命令将其导入我的数据库。

gunzip -c foo.sql.gz > foo.sql

mysql -uroot -ppassword foo < foo.sql

foo 是数据库。

我怎样才能将这两个命令合并到一个命令中?

尝试过

gunzip -c foo.sql.gz | mysql -uroot -ppassword foo

但似乎不起作用;我明白了gzip: stdout: Broken pipe

答案1

zcat foo.sql.gz | mysql -uroot -ppassword foo

这也将保持foo.sql.gz原样。

答案2

对于使用 Max OSX 的用户一个错误因此zcat您需要使用gzcat

gzcat foo.sql.gz | mysql -uroot -ppassword foo

答案3

所有其他答案都建议在命令中写入密码。这是一种非常糟糕的做法,会带来安全风险。请不要做那。

您可以在命令中将密码留空,然后它会要求您以交互方式输入密码。这样密码就不会保存在 bash 历史记录中。

gunzip < dump.sql.gz | mysql -u username -p databasename

相关内容