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