所以这是一个有点奇怪的请求,但是希望这里的人知道一些命令行函数。可能也要发布到serverfault上,我们等着瞧吧。
我正在尝试弄清楚如何将curl请求的结果传递给mysql命令行应用程序。所以基本上就像这样-
mysql --user=root --password=my_pass < (curl http://localhost:3000/application.sql)
其中该URL返回的基本上是带有sql语句的文本响应。
一些上下文:
我正在开发的一个应用程序支持多个安装,作为新实例安装过程的一部分,我们为新实例启动了“数据”数据库的副本。
我试图尽可能地自动化部署过程,所以我在rails中构建了一个小的“仪表板”应用程序,它可以为每个实例生成sql语句、配置文件等,还可以帮助我们查看实例的统计信息和其他有趣的东西。现在,我正在编写capistrano任务,以便根据作为变量传入的安装ID进行实际部署。
初始部署设置包括创建应用程序数据库,此sql请求将执行此操作。从理论上讲,我可以在wget请求中拉出文件,执行并删除它,但我认为告诉远程服务器curl请求它并在一步中执行它会更干净。
有什么好主意吗?
发布于 2010-11-08 02:42:34
我相当确定你最初拥有的语法不会像'<‘期望的文件那样工作。相反,您希望通过管道输出curl的输出,默认情况下,curl打印到mysql的STDOUT。我相信下面的方法会对你起作用。
curl http://localhost:3000/application.sql | mysql --user=root --password=my_pass
发布于 2010-11-08 03:17:43
在Bash中,您可以进行流程替换:
mysql ... < <(curl ...)
https://stackoverflow.com/questions/4120859
复制相似问题