Импортируйте и вставьте файл sql.gz в базу данных с помощью putty

Я хочу вставить sql.gz файл в мою базу данных с SSH. Что я должен делать?

Например, у меня есть база данных из телефонных номеров, имя которой numbers.sql.gzчто это за тип файла и как я могу импортировать этот файл в мою базу данных?

7 ответов

Решение

Файл представляет собой сжатый (сжатый) файл SQL, почти наверняка обычный текстовый файл с расширением.sql. Первое, что вам нужно сделать, это скопировать файл на сервер базы данных через scp. Я думаю, что PuTTY's это pscp.exe

# Copy it to the server via pscp
C:\> pscp.exe numbers.sql.gz user@serverhostname:/home/user

Затем SSH на ваш сервер и распакуйте файл с gunzip

user@serverhostname$  gunzip numbers.sql.gz
user@serverhostname$  ls 

numbers.sql

Наконец, импортируйте его в базу данных MySQL, используя < оператор перенаправления ввода:

user@serverhostname$  mysql -u mysqluser -p < numbers.sql

Если файл numbers.sql не создает базу данных, но ожидает, что она уже существует, вам нужно будет также включить базу данных в команду:

user@serverhostname$  mysql -u mysqluser -p databasename < numbers.sql

Если у вас есть возможность подключиться напрямую к вашему серверу MySQL извне, вы можете использовать локальный клиент MySQL вместо копирования и SSH. В этом случае вам просто понадобится утилита, которая может распаковать файлы.gz в Windows. Я полагаю, что 7zip так делает, или вы можете получить двоичные файлы gzip/gunzip для Windows.

Авторизуйтесь на вашем сервере, используя программу-оболочку, такую ​​как putty.

Введите следующую команду в командной строке

zcat DB_File_Name.sql.gz | mysql -u username -p Target_DB_Name

где

DB_File_Name.sql.gz = полный путь файла sql.gz для импорта

username = ваше имя пользователя mysql

Target_DB_Name = имя базы данных, куда вы хотите импортировать базу данных

Когда вы нажимаете Enter в командной строке, он запрашивает пароль. Введите свой пароль MySQL.

Вы сделали!

Без отдельного шага для распаковки архива:

# import gzipped-mysql dump
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME

Я использую приведенный выше фрагмент кода для повторного импорта резервных копий mysqldump, а следующий - для его резервного копирования.

# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz

Для oneliner, на linux или cygwin, вам нужно выполнить аутентификацию с открытым ключом на хосте, иначе ssh будет запрашивать пароль.


gunzip -c numbers.sql.gz | ssh user@host mysql --user=user_name --password=your_password db_name

Или выполните переадресацию портов и подключитесь к удаленному mysql, используя "локальное" подключение:

ssh -L some_port:host:local_mysql_port user@host

затем выполните подключение mysql на локальном компьютере к localhost: some_port.

Переадресация портов будет работать и из putty, с аналогичной опцией -L, или вы можете настроить ее с панели настроек, где-то вниз по дереву.

Если у вас есть scp, то:

Чтобы переместить ваш файл с локального на удаленный:

$scp /home/user/file.gz user@ipaddress:path/to/file.gz 

Чтобы переместить ваш файл с удаленного на локальный:

$scp user@ipaddress:path/to/file.gz /home/user/file.gz

Чтобы экспортировать файл mysql без входа в удаленную систему:

$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p  databasename | gzip -9 > databasename.sql.gz

Чтобы импортировать файл MySQL без входа в систему, выполните следующие действия.

$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p 

Примечание. Убедитесь, что у вас есть сетевой доступ к IP-адресу удаленного хоста.

Чтобы проверить доступ к сети:

$ping ipaddressofremotehost

Если дамп mysql был файлом.gz, необходимо распаковать файл, чтобы распаковать файл, набрав $ gunzip mysqldump.sql.gz

Это распакует файл.gz и просто сохранит mysqldump.sql в том же месте.

Введите следующую команду для импорта файла данных sql:

$ mysql -u username -p -h localhost test-database

Если у вас есть много баз данных, они импортируются, и дампы большие (я часто работаю с многодигабайтными Gzipped дампами).

Здесь есть способ сделать это внутри MySQL.

$ mkdir databases
$ cd databases
$ scp user@orgin:*.sql.gz .  # Here you would just use putty to copy into this dir.
$ mkfifo src
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.41-0
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database db1;
mysql> \! ( zcat  db1.sql.gz > src & )
mysql> source src
.
.
mysql> create database db2;
mysql> \! ( zcat  db2.sql.gz > src & )
mysql> source src

Единственное преимущество, которое это имеет над

zcat db1.sql.gz | mysql -u root -p 

является то, что вы можете легко сделать несколько без ввода пароля много раз.

Создание файла дампа SQL.gz на текущем сервере

$ sudo apt-get install pigz pv

$ pv | mysqldump --user=<yourdbuser> --password=<yourdbpassword> <currentexistingdbname> --single-transaction --routines --triggers --events --quick --opt -Q --flush-logs --allow-keywords --hex-blob --order-by-primary --skip-comments --skip-disable-keys --skip-add-locks --extended-insert --log-error=/var/log/mysql/<dbname>_backup.log | pigz > /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz

Необязательно: Аргументы команды для подключения

--host=127.0.0.1 / localhost / IP Address of the Dump Server
--port=3306

Импорт созданного выше дамп-файла на другой сервер

$ sudo apt-get install pigz pv

$ zcat /path/to/folder/<dbname>_`date +\%Y\%m\%d_\%H\%M`.sql.gz | pv | mysql --user=<yourdbuser> --password=<yourdbpassword> --database=<yournewdatabasename> --compress --reconnect --unbuffered --net_buffer_length=1048576 --max_allowed_packet=1073741824 --connect_timeout=36000 --line-numbers --wait --init-command="SET GLOBAL net_buffer_length=1048576;SET GLOBAL max_allowed_packet=1073741824;SET FOREIGN_KEY_CHECKS=0;SET UNIQUE_CHECKS = 0;SET AUTOCOMMIT = 1;FLUSH NO_WRITE_TO_BINLOG QUERY CACHE, STATUS, SLOW LOGS, GENERAL LOGS, ERROR LOGS, ENGINE LOGS, BINARY LOGS, LOGS;"

Необязательно: Аргументы команды для подключения

--host=127.0.0.1 / localhost / IP Address of the Import Server
--port=3306

mysql: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным. 1,0 ГБ 00:06:51 [8,05 МБ / с] [<=> ]

Дополнительные пакеты программного обеспечения помогают быстрее импортировать файл базы данных SQL

  • с прогрессом (pv)
  • Параллельно gzip (pigz/unpigz) параллельно распаковывает файлы gzip/gunzip

для более быстрого архивирования выхода

Другие вопросы по тегам