【问题标题】:Execute MySQL script located on SFTP执行位于 SFTP 上的 MySQL 脚本
【发布时间】:2014-06-26 12:38:19
【问题描述】:

我编写了一个连接到 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 所在的服务器上?

【问题讨论】:

  • 这听起来像是XY problem。你能澄清你真正想要做什么吗?可能有更好的方法来执行这个过程。

标签: mysql windows sftp


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

  • 谢谢马丁。我几乎得出了相同的结论,但我想确定一下。我可能最终不得不将脚本下载到 MySQL 所在的同一台服务器上。感谢您的回复!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多