用putty导入并插入sql.gz文件到数据库中

我想用SSH插入一个sql.gz文件到我的数据库中。 我该怎么办?

例如,我有一个名为numbers.sql.gz电话号码的数据库,这种types的文件是什么,如何将这个文件导入到我的数据库?

该文件是一个gzipped(压缩)的SQL文件,几乎可以肯定是一个以.sql为扩展名的纯文本文件。 你需要做的第一件事是通过scp复制文件到你的数据库服务器.. 我认为PuTTY的是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 

最后,使用<inputredirect操作符将其导入到MySQL数据库中:

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

如果numbers.sql文件没有创build数据库,但希望已经存在数据库,则还需要在命令中包含数据库:

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

如果您能够从外部直接连接到您的MySQL服务器,那么您可以使用本地MySQL客户端,而不必复制和SSH。 在这种情况下,您只需要一个可以在Windows上解压缩.gz文件的实用程序。 我相信7zip这样做,或者你可以获得Windows的gzip / gunzip二进制文件 。

使用像putty这样的shell程序login到你的服务器。

在命令行中input以下命令

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

哪里

DB_File_Name.sql.gz =要导入的sql.gz文件的完整path

username =你的mysql用户名

Target_DB_Name =要导入数据库的数据库名称

当你在命令行中input时,它会提示input密码。 input你的MySQL密码。

你完成了!

没有一个单独的步骤来提取存档:

 # 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 

对于oneliner,在linux或者cygwin上,你需要在主机上进行公钥authentication,否则ssh会要求input密码。

 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

使用类似的-L选项,端口转发也可以从putty工作,也可以从设置面板(树中的某处)进行configuration。

如果你有很多的数据库导入和转储很大(我经常工作与千兆字节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 

是你可以很容易做到多次,而无需多次input密码。

如果你有scp那么:

将文件从本地移动到远程:

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

将文件从远程移动到本地:

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

要导出你的mysql文件而不login到远程系统:

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

要导入你的mysql文件并login到远程系统:

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

注意:确保你有networking访问远程主机的IP地址

要检查networking访问:

 $ping ipaddressofremotehost