Відповіді:
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