Я хочу вставить файл sql.gz
в мою базу данных с помощью SSH. Что мне делать?
Например, у меня есть база данных из телефонных номеров, имя которой numbers.sql.gz
, что это за тип файла и как я могу импортировать этот файл в мою базу данных?
Я хочу вставить файл sql.gz
в мою базу данных с помощью SSH. Что мне делать?
Например, у меня есть база данных из телефонных номеров, имя которой numbers.sql.gz
, что это за тип файла и как я могу импортировать этот файл в мою базу данных?
Файл представляет собой сжатый (сжатый) SQL файл, почти наверняка простой текстовый файл с расширением .sql. Первое, что вам нужно сделать, это скопировать файл на сервер базы данных с помощью scp.. Я думаю, что PuTTY - pscp.exe
# Copy it to the server via pscp
C:\> pscp.exe numbers.sql.gz [email protected]:/home/user
Затем SSH на ваш сервер и распакуйте файл с помощью gunzip
[email protected]$ gunzip numbers.sql.gz
[email protected]$ ls
numbers.sql
Наконец, импортируйте его в свою базу данных MySQL с помощью оператора перенаправления ввода <
:
[email protected]$ mysql -u mysqluser -p < numbers.sql
Если файл numbers.sql не создает базу данных, но ожидает, что он уже присутствует, вам также нужно будет добавить базу данных в команду:
[email protected]$ mysql -u mysqluser -p databasename < numbers.sql
Если у вас есть возможность напрямую подключаться к серверу MySQL извне, вы можете использовать локальный клиент MySQL вместо копирования и SSH. В этом случае вам просто понадобится утилита, которая может распаковать файлы .gz в Windows. Я считаю, что 7zip делает это, или вы можете получить gzip/gunzip binaries для 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 [email protected] mysql --user=user_name --password=your_password db_name
Или переадресация портов и подключение к удаленному mysql с помощью "локального" соединения:
ssh -L some_port:host:local_mysql_port [email protected]
то соединение mysql на вашей локальной машине с localhost: some_port.
Переадресация портов будет работать от putty, с аналогичной опцией -L или вы можете настроить ее с панели настроек, где-то на дереве.
Если у вас есть много базы данных, они импортируются, а дампы большие (я часто работаю с многогигабайтными Gzip-дампами).
Здесь есть способ сделать это внутри mysql.
$ mkdir databases
$ cd databases
$ scp [email protected]:*.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
заключается в том, что вы можете легко сделать несколько, не вводя пароль много раз.
Если у вас есть scp, тогда:
Чтобы переместить файл с локального на удаленный:
$scp /home/user/file.gz [email protected]:path/to/file.gz
Чтобы переместить файл с удаленного на локальный:
$scp [email protected]:path/to/file.gz /home/user/file.gz
Чтобы экспортировать файл mysql без входа в удаленную систему:
$mysqldump -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p databasename | gzip -9 > databasename.sql.gz
Чтобы импортировать ваш файл mysql с именем пользователя tooug в удаленную систему:
$gunzip < databasename.sql.gz | mysql -h ipaddressofremotehost -Pportnumber -u usernameofmysql -p
Примечание. Убедитесь, что у вас есть сетевой доступ к ipaddress удаленного хоста.
Чтобы проверить доступ к сети:
$ping ipaddressofremotehost