将Curl请求的结果传递给mysql命令行

时间:2010-11-08 02:28:19

标签: bash curl capistrano

所以这是一个奇怪的请求,但希望有人在这里知道一些命令行fu。可能还要发布到serverfault,我们会看到。

我试图找出如何将curl请求的结果传递给mysql命令行应用程序。所以基本上有点像这样 -

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

其中该URL基本上返回带有sql语句的文本响应。

某些背景信息:

我正在开发的应用程序支持多个安装,作为新实例的安装过程的一部分,我们为新实例启动了“数据”数据库的副本。

我正在尝试尽可能自动化部署过程,因此我在rails中构建了一个小的“仪表板”应用程序,可以为每个实例生成sql语句,配置文件等,还可以帮助我们查看有关实例的统计信息和其他有趣的东西。现在我正在编写capistrano任务,以实际根据我作为变量传入的安装ID进行部署。

初始部署设置包括创建应用程序数据库,此sql请求将执行此操作。理论上,我可以在wget请求中拉出文件,执行并删除它,但我认为只需告诉远程服务器卷曲请求并一步执行它就会更清晰。

那么任何想法?

2 个答案:

答案 0 :(得分:2)

我很确定你原来的语法不能用作'&lt;'期待一个文件。相反,你想管道curl的输出,默认情况下打印到STDOUT到mysql。 我相信以下内容对您有用。

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

答案 1 :(得分:2)

在Bash中,您可以进行流程替换:

mysql ... < <(curl ...)