Ответы:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
запишет вывод mysql
команды stdout
в файл, myfile.sql.gz
который, скорее всего, не тот, который вы хотите. Кроме того, эта команда запросит у вас пароль пользователя MySQL «root».
~/.my.cnf
с учетными данными. ;)
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
. Он будет знать, что последний параметр - это база данных, которую вы хотите использовать, а не ваш пароль.
Чтобы отобразить индикатор выполнения при импорте файла sql.gz, загрузите pv
и используйте следующее:
pv mydump.sql.gz | gunzip | mysql -u root -p
В CentOS / RHEL вы можете установить pv с помощью yum install pv
.
В Debian / Ubuntu apt-get install pv
.
В MAC, brew install pv
pv
В репозитории Ubuntu, кажется, тоже (по крайней мере, в 12.04 LTS это так), но опять же, вам нужно сделать это, sudo apt-get install pv
чтобы получить его. Благодаря Banjer, это идеально подходит для импорта больших баз данных!
brew install pv
Самый простой способ - разархивировать файл базы данных перед импортом. Также как упомянуто @Prof. Мориарти, вы не должны указывать пароль в команде (вам будет предложено ввести пароль). Эта команда, взятая из webcheatsheet , разархивирует и импортирует базу данных за один раз:
gunzip < myfile.sql.gz | mysql -u root -p mydb
gunzip
в сжатом файле размером 10 ГБ привел к зависанию импорта. не уверен, что это из-за ограничений памяти или чего-то еще, но я бы ошибся, если бы в будущем делал один шаг за раз.
Если вы получили сообщение об ошибке zcat
, в котором сообщение об ошибке содержит имя файла с дополнительным суффиксом .Z
, попробуйте использовать gzcat
вместо этого, как описано на странице https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly
Также проверьте, есть ли какой-либо оператор USE в файле SQL. Указание базы данных в командной строке не гарантирует, что данные окажутся там, если в файле SQL указано другое место назначения.
pv mydump.sql.gz | gunzip | mysql -u root -p
your_database
. Принятый ответ использует этот подход.
Для сжатых файлов bzip2 (.sql.bz2) используйте:
bzcat <file> | mysql -u <user> -p <database>
ИЛИ ЖЕ
pv <file> | bunzip2 | mysql -u <user> -p <database>
чтобы увидеть индикатор выполнения.
Вы можете использовать -c, --stdout, --to-stdout
опцию gunzip
команды
например:
gunzip -c file.sql.gz | mysql -u root -p database