管道 gunzip 和 mysql 以 gunzip 转储并导入它

ape*_*ari 29 mysql gunzip pipe stdout dump

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

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

mysql -uroot -ppassword foo < foo.sql
Run Code Online (Sandbox Code Playgroud)

foo 是数据库。

如何在一个命令中管理这两个命令?

试过

gunzip -c foo.sql.gz | mysql -uroot -ppassword foo
Run Code Online (Sandbox Code Playgroud)

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

Nif*_*fle 41

zcat foo.sql.gz | mysql -uroot -ppassword foo
Run Code Online (Sandbox Code Playgroud)

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


小智 14

对于那些在 Max OSX 上的人来说,有一个错误zcat所以你需要gzcat改用。

gzcat foo.sql.gz | mysql -uroot -ppassword foo
Run Code Online (Sandbox Code Playgroud)


Ели*_* Й. 6

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

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

gunzip < dump.sql.gz | mysql -u username -p databasename
Run Code Online (Sandbox Code Playgroud)