Вопрос: Как загрузить файл sql.gz в мою базу данных? (Импорт)


Я пытаюсь импортировать файл gzipped SQL в mysql напрямую. Правильно ли это?

mysql -uroot -ppassword mydb > myfile.sql.gz

110
2018-05-03 07:06


Источник


Даже игнорируя gzip-сторону вопроса, ваша стрелка указывает на неправильный путь ... - Matt Fletcher


Ответы:


zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

> будет записывать вывод mysql команда на stdout в файл myfile.sql.gz что, скорее всего, не то, что вы хотите. Кроме того, эта команда предложит вам пароль пользователя «root» пользователя MySQL.


177
2018-05-03 07:10



Как хорошая практика безопасности, я бы поместил свой пароль в командной строке, я бы предложил mysql просить об этом. - Prof. Moriarty
Или еще лучше: создать ~/.my.cnf с полномочиями. ;) - joschi
Как @Prof. Мориарти объясняет, вы можете изменить команду, чтобы не использовать пароль через zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database, Он будет знать, что последний параметр - это база данных, которую вы хотите использовать, а не ваш пароль. - bafromca
Чтобы слегка исправить комментарий @ Prof.Moriarty, хорошая практика безопасности будет заключаться в том, чтобы не введите мой пароль в командной строке (где он будет храниться в истории или замечен через плечо), и пусть MySQL попросит об этом. Флаг -p сам по себе заставит MySQL запрашивать запрос на ввод пароля. - George
+1 для чего-то, что оставляет дамп базы данных дамп сжатым - Dmitri DB


Чтобы отобразить индикатор выполнения при импорте файла 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


62
2017-11-03 19:46



pv похоже, тоже в репозиториях Ubuntu (по крайней мере, в 12,04 LTS это), но вам снова нужно сделать sudo apt-get install pv чтобы получить его. Благодаря Banjer, это идеально подходит для большого импорта баз данных! - toon81
Мне пришлось запустить pv mydump.sql.gz | gunzip | mysql -u root my_database_name. Это было потому, что я импортировал таблицы, и у меня нет пароля для моего пользователя root - Cristiano Alencar
В MAC, brew install pv - score


Самый простой способ - распаковать файл базы данных перед импортом. Также, как упоминалось @Prof. Moriarty вы не должны указывать пароль в команде (вам будет предложено ввести пароль). Эта команда взята из webcheatsheet будет распаковывать и импортировать базу данных за один раз:

gunzip < myfile.sql.gz | mysql -u root -p mydb

47
2017-11-22 15:51



Кроме того, перед импортом необходимо создать mydb. Это не создает db для вас. - Siddhartha
я нашел мой трубопровод gunzip в сжатом файле 10 Гбайт мой импорт заморозился. не уверен, что это связано с ограничениями памяти или чем-то другим, но я бы ошибался на стороне одного шага за раз в будущем. - Ryan Tuck
@RyanTuck Это толкает границы этих процессов :) - icc97
@Siddhartha Это зависит от файла sql dump. Иногда они включают в себя создание операторов базы данных. - rooby
@rooby, что имеет смысл. - Siddhartha


Если вы получили сообщение об ошибке zcat, в котором сообщение об ошибке содержит имя файла с дополнительным суффиксом .Z, затем попробуйте использовать gzcat вместо этого, как описано в https://stackoverflow.com/questions/296717/zcat-wont-unzip-files-properly


9
2017-07-08 13:59





Также проверьте, есть ли какой-либо USE-оператор в файле SQL. Указание базы данных в командной строке не гарантирует, что данные заканчиваются там, если в файле SQL указан другой пункт назначения.


3
2018-05-03 11:28



Вам просто нужно расширить команду следующим образом: pv mydump.sql.gz | gunzip | mysql -u root -p  your_database, В принятом ответе используется такой подход. - bafromca


В macOS я использовал это:

zcat < [Database].sql.gz | mysql -u root -p [Database Name in MySQL]

Введите свой пароль и вуаля!


3
2017-11-28 07:41





Для bzip2 сжатые файлы (.sql.bz2), используйте:

bzcat <file> | mysql -u <user> -p <database>

ИЛИ

pv <file> | bunzip2 | mysql -u <user> -p <database>

чтобы увидеть индикатор выполнения.


1
2017-08-01 15:25