2014-05-08 78 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所在的同一臺服務器上。感謝您的迴應! –