我想用SSH将sql.gz
文件插入我的数据库。我该怎么办?
例如,我有一个名为numbers.sql.gz
的电话号码的数据库,这种类型的文件是什么以及如何将此文件导入我的数据库?
答案 0 :(得分:107)
使用像putty这样的shell程序登录到您的服务器。
在命令行上输入以下命令
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密码。
你完成了!
答案 1 :(得分:56)
该文件是一个压缩(压缩)的SQL文件,几乎可以肯定是以.sql作为扩展名的纯文本文件。您需要做的第一件事是通过scp .. I think PuTTY's is 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。在这种情况下,您只需要一个可以在Windows上解压缩.gz文件的实用程序。我相信7zip会这样做,或者你可以获得Windows的gzip/gunzip binaries。
答案 2 :(得分:46)
没有单独的步骤来提取存档:
# import gzipped-mysql dump
gunzip < DUMP_FILE.sql.gz | mysql --user=DB_USER --password DB_NAME
我使用上面的代码片段重新导入mysqldump-backups,以及以下内容用于备份。
# mysqldump and gzip (-9 ≃ highest compression)
mysqldump --user=DB_USER --password DB_NAME | gzip -9 > DUMP_FILE.sql.gz
答案 3 :(得分:3)
对于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选项,或者您可以从树上某处的设置面板进行配置。
答案 4 :(得分:2)
如果你有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
注意:确保您可以访问远程主机的ipaddress
检查网络访问:
$ping ipaddressofremotehost
答案 5 :(得分:0)
如果你导入了很多数据库并且转储很大(我经常使用多GB的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
是你可以很容易地做多次而无需多次输入密码。
答案 6 :(得分:0)
如果mysql转储是.gz文件,则需要通过压缩来解压缩文件 $ gunzip mysqldump.sql.gz
这将解压缩.gz文件,并将mysqldump.sql存储在同一位置。
键入以下命令以导入sql数据文件:
$ mysql -u username -p -h localhost test-database&lt; mysqldump.sql密码:_
答案 7 :(得分:0)
在当前服务器上创建转储文件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.0GiB 00:06:51 [8.05MiB / s] [<=>]
可选软件包有助于更快地导入数据库SQL文件
更快地压缩输出