gunzipとmysqlをパイプでダンプをgunzipしてインポートする


27

.gz sqlダンプファイル(例:foo.sql.gz)があり、クラシックmysqlコマンドを使用してデータベースにインポートします。

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

mysql -uroot -ppassword foo < foo.sql

fooはデータベースです。

これら2つのコマンドを1つのコマンドにパイプするにはどうすればよいですか?

試した

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

しかし、機能していないようです。私は得るgzip: stdout: Broken pipe


6
参考までに、あなたは本当にコマンドラインでmysqlパスワードを渡したくありません。これにより、すべての人が見ることができるように〜/ .bash_historyに保存されます。あなたはそれ-p置けばはるかに安全である(いずれかzcatのパイプを破壊しない)パスワードを入力するよう求められます
thefreeman

1
gunzip <foo.sql.gz | mysql -uroot -ppassword foo-
矢田

回答:


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

これもそのままfoo.sql.gzになります。


1
速度に関しては、これはgunzip && mysql -e "use unzipped.sql"よりもはるかに遅く動作します。
ポダロック

13

Max OSXのユーザーにはバグがあるzcatためgzcat代わりに使用する必要があります。

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

2

他のすべての答えは、コマンドにパスワードを書くことを推奨しています。これは非常に悪い習慣であり、セキュリティ上のリスクをもたらします。してくださいしないでくださいことを。

コマンドでパスワードを空のままにすると、対話形式でパスワードを入力するよう求められます。この方法では、パスワードはbash履歴に保存されません。

gunzip < dump.sql.gz | mysql -u username -p databasename
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.