所以这是一个奇怪的请求,但希望有人在这里知道一些命令行fu。可能还要发布到serverfault,我们会看到。
我试图找出如何将curl请求的结果传递给mysql命令行应用程序。所以基本上有点像这样 -
mysql --user=root --password=my_pass < (curl http://localhost:3000/application.sql)
其中该URL基本上返回带有sql语句的文本响应。
某些背景信息:
我正在开发的应用程序支持多个安装,作为新实例的安装过程的一部分,我们为新实例启动了“数据”数据库的副本。
我正在尝试尽可能自动化部署过程,因此我在rails中构建了一个小的“仪表板”应用程序,可以为每个实例生成sql语句,配置文件等,还可以帮助我们查看有关实例的统计信息和其他有趣的东西。现在我正在编写capistrano任务,以实际根据我作为变量传入的安装ID进行部署。
初始部署设置包括创建应用程序数据库,此sql请求将执行此操作。理论上,我可以在wget请求中拉出文件,执行并删除它,但我认为只需告诉远程服务器卷曲请求并一步执行它就会更清晰。
那么任何想法?
答案 0 :(得分:2)
我很确定你原来的语法不能用作'&lt;'期待一个文件。相反,你想管道curl的输出,默认情况下打印到STDOUT到mysql。 我相信以下内容对您有用。
curl http://localhost:3000/application.sql | mysql --user=root --password=my_pass
答案 1 :(得分:2)
在Bash中,您可以进行流程替换:
mysql ... < <(curl ...)