Відповіді:
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database
>
запише висновок mysql
команди stdout
у файл, myfile.sql.gz
який, швидше за все, не є тим, що потрібно. Крім того, ця команда запропонує ввести пароль користувача "root" користувача MySQL.
~/.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. Moriarty, вам не слід вказувати пароль у команді (вам буде запропоновано пароль). Ця команда, взята з веб-листів, розпакує та імпортує базу даних за один раз:
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