2010-11-08 95 views
0

所以這是一個奇怪的請求,但希望這裏有人知道一些命令行fu。我們可以看到,可能還必須發佈到serverfault。將curl請求的結果傳遞給mysql命令行

我想弄清楚如何將curl請求的結果傳遞給mysql命令行應用程序。所以基本上有點像這樣 -

mysql --user=root --password=my_pass < (curl http://localhost:3000/application.sql) 

其中該URL基本上返回一個帶有sql語句的文本響應。

一些背景:

我開發的應用程序支持多種安裝,作爲一個新的實例,我們分拆了我們的「數據」數據庫的副本爲新實例的安裝過程的一部分。

我試圖儘可能地自動化部署過程,所以我在rails中構建了一個小的「儀表板」應用程序,可以爲每個實例生成sql語句,配置文件等,還可以幫助我們查看有關實例和其他有趣的東西。現在我正在寫capistrano任務,根據我作爲變量傳入的安裝ID實際進行部署。

初始部署設置包括創建此SQL請求將執行的應用程序數據庫。理論上,我可以在wget請求中提取文件,執行並刪除它,但我認爲只要告訴遠程服務器請求並一步執行它就會更清潔。

那麼有什麼想法?

回答

2

我相當肯定您的語法原本不會工作,因爲'<'需要一個文件。相反,你需要管道curl的輸出,默認情況下,它將輸出到STDOUT到mysql。 我相信以下內容適合你。

curl http://localhost:3000/application.sql | mysql --user=root --password=my_pass 
+0

工作就像一個魅力。謝謝。 – JoshReedSchramm 2010-11-08 03:04:47

2

在bash中,你可以做進程替換:

mysql ... < <(curl ...) 
+0

我不知道你能做到這一點,那很整齊。 – Danny 2010-11-09 13:02:54

相關問題