执行位于SFTP上的MySQL脚本

时间:2014-05-08 21:59:01

标签: mysql windows sftp

我编写了一个连接到SFTP位置的Windows服务(C#),解压缩包含MySQL脚本的文件,并且应该执行这些脚本以将数据注入MySQL数据库。

我无法让脚本运行。这是我的过程:

  • 使用Renci.SSHNet库
  • 连接到SFTP
  • 创建一个将打开命令窗口的流程
  • 创建一条将使用适当的参数运行mysql.exe的行。以下是我写入命令窗口的示例:

    "C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE\mysql.exe" --user=username --password=password1 --host=serverHostName --port=3306 --database=mysqlData < "sftp://zendto.server.com/ftp/datadump/data_2014-05-08/mysql.sql"

运行进程时,我在EventLog中收到以下错误:

  

文件名,目录名或卷标语法不正确。

我也尝试从字符串中删除sftp限定符,因为我应该已经连接到SFTP。

"C:\Program Files (x86)\MySQL\MySQL Workbench 6.0 CE\mysql.exe" --user=username --password=password1 --host=serverHostName --port=3306 --database=mysqlData < "/ftp/datadump/data_2014-05-08/mysql.sql"

我得到了一个不同的错误:

  

系统找不到指定的路径。

MySQL可以直接连接到SFTP吗?或者我是否必须将文件下载到MySQL所在的服务器?

1 个答案:

答案 0 :(得分:0)

没有看到你的代码,我只能猜测。

我假设您在本地执行这些mysql.exe命令。

第一个错误是由于您尝试从mysql.exe网址重定向sftp://的输入而导致的。这在Windows上是不可能的(实际上我不知道任何可能的操作系统)。

第二个错误是由尝试从本地环境访问远程文件引起的。

简单地说,通过SFTP与Renci.SSHNet连接的事实不会使Process神奇地在本地和远程文件系统上工作。

如果可以远程管理远程MySQL数据库(使用本地mysql.exe),解决方法是下载MySQL脚本并在本地使用它们。

虽然如果你能够执行远程“解压缩”命令,你也应该能够执行远程MySQL客户端(而不是本地Windows mysql.exe客户端)。这样可以节省下载脚本和上传数据的带宽。