gunzip과 mysql을 파이프하여 덤프를 gunzip으로 가져와 가져 오기


27

고전적인 mysql 명령을 사용하여 데이터베이스로 가져 오려는 .gz sql 덤프 파일 (예 : foo.sql.gz)이 있습니다.

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


6
참고로 실제로 명령 줄에서 mysql 암호를 전달하고 싶지 않습니다. 모든 사람들이 볼 수 있도록 ~ / .bash_history에 저장됩니다. -p를 입력하면 훨씬 더 안전한 암호를 입력하라는 메시지가 나타납니다 (zcat 파이프를
끊지 않음

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

답변:


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

이것은 또한 그대로 남습니다 foo.sql.gz.


1
속도면에서 이것은 gunzip && mysql -e "use unzipped.sql"보다 훨씬 느리게 작동합니다.
podarok

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.