24

У меня есть файл дампа .gz sql (пример: foo.sql.gz), который я хочу импортировать в свою базу данных с помощью классической команды mysql.

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

mysql -uroot -ppassword foo < foo.sql

фу это база данных.

Как я могу передать эти две команды в одну?

Пытался

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

но, похоже, не работает; я получаю gzip: stdout: Broken pipe

3 ответа3

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

Это также оставит foo.sql.gz как есть.

12

Для тех, кто работает в Max OSX, есть ошибка с zcat поэтому вам нужно использовать вместо gzcat .

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

Все остальные ответы рекомендуют написать пароль в команде. Это очень плохая практика и создает угрозу безопасности. Пожалуйста, НЕ ДЕЛАЙТЕ этого.

Вы можете оставить пароль пустым в команде, после чего он попросит вас ввести пароль в интерактивном режиме. Таким образом, пароль не сохраняется в истории Bash.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .