通过SSH将数据从文件加载到Mysql表中

时间:2014-07-17 12:20:30

标签: mysql ssh

Server1有一个MySQL服务器,Server2有一个文件需要导入表Server1的MySQL服务器。我只能使用SSH访问Server2及其文件。

现在什么是最好的解决方案呢?一种效率低下的方法是将scp文件放到Server2的硬盘上,然后为该文件执行LOAD DATA INFILE。但由于文件很大,我想避免这样做。

有没有办法从Server2直接将文件加载到Server1的Mysql中?

2 个答案:

答案 0 :(得分:3)

cat file.sql | ssh -C -c blowfish username@myserver mysql -u username -p database_name

在此命令中,-C在传输期间启用压缩,-c blowfish选择使用比默认CPU少的CPU的加密算法。

常识会建议传输压缩文件,以便您可以使用例如MD5验证校验和,然后从压缩文件中运行导入。

希望这有帮助。

答案 1 :(得分:1)

您希望使用ssh隧道远程安全地访问您的mysql服务器。

以下命令将创建端口转发:

$ ssh -f -L <[local address:]port>:<remote address;port> -N <user id>

例如:

$ ssh -F -L 45678:localhost:3307 -N foo@localhost

将使用foo的凭据将localhost上的默认mysql服务器端口转发到端口45678(这可能对测试有用)。

然后,您可以使用本地程序连接到服务器:

$ mysql -p -u foo -P 45678

在mysql提示符下,可以使用LOAD DATA语句批量加载数据文件,该语句使用可选关键字LOCAL来指示文件位于连接的客户端

文档:

相关问题