2014-05-08 49 views
0

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

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

  • 连接使用Renci.SSHNet库
  • 创建一个进程,这将打开一个命令窗口
  • 创建将运行mysql.exe使用适当的参数一行SFTP。以下是我在写命令窗口的例子:

    "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"

在运行的过程中,我得到的事件日志以下错误:

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

我也尝试从字符串中删除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所在的服务器上?

+0

这听起来像它可能是一个[XY问题](http://meta.stackexchange。COM /问题/ 66377 /什么,是最XY-问题)。你能澄清你实际上想要做什么吗?可能有更好的方法来执行这个过程。 –

+0

同时显示您的代码。 –

回答

0

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

我假设你在本地执行那些mysql.exe命令。

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

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

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

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

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

+0

谢谢马丁。我几乎得出了相同的结论,但我想确保。我可能不得不将脚本下载到MySQL所在的同一台服务器上。感谢您的回应! –