我有一个.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