Назад | Перейти на главную страницу

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

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

mysql -uroot -ppassword mydb > myfile.sql.gz
zcat /path/to/file.sql.gz | mysql -u 'root' -p your_database

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

Чтобы отобразить индикатор выполнения при импорте файла sql.gz, загрузите pv и используйте следующее:

pv mydump.sql.gz | gunzip | mysql -u root -p <database name>

В CentOS / RHEL вы можете установить pv с помощью yum install pv.

В Debian / Ubuntu apt-get install pv.

В MAC brew install pv

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

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

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

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

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

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

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

Для 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

Для экспорта в .sql.qz команда: -

mysqldump -u имя пользователя -p база данных | gzip> database.sql.gz

Для импорта файла .sql.qz команда: -

gunzip <database.sql.gz | mysql -u usrname -p новая база данных

Шайлеш Тапа

Допустим, вам нужно заполнить user_data с помощью mysql, попробуйте следующее:

export DEBIAN_FRONTEND=noninteractive \
    apt-get update -yq
    dpkg -l | grep mysql-server || (echo "Installing MySQL..." \
    && apt-get install -yq mysql-server \
    && echo -e "\n[mysqld]\nbind-address=0.0.0.0\nskip-name-resolve=1" | tee -a /etc/mysql/my.cnf \
    && aws s3 cp --quiet s3://your-bucket/mysqldump_all_databases.sql.gz - | zcat | mysql -uroot\
    && systemctl restart mysql)

На MacOS Я использовал следующий однострочный файл без необходимости устанавливать дополнительные программы, кроме самого клиента MySQL.

$ cat /path/to/file.sql.gz | gzip -d | mysql -u root <db_name>

Первая команда, cat, распечатывает файл. Его вывод, содержимое файла, отправляется как ввод для следующей команды, gzip. gzip с -d опция распаковывает переданный ему ввод и выводит результат, который, наконец, используется как ввод для клиента MySQL, mysql программа. Вывод -> отправка ввода доставляется нам | (pipe) оператор в bash и других оболочках.

Этот сценарий также можно использовать в некоторых популярных дистрибутивах Linux, таких как Ubuntu. Я не уверен gzip всегда в наличии. Но его можно легко установить, если нет, с помощью:

$ sudo apt install gzip