Передать результат запроса Curl в командную строку mysql - PullRequest
0 голосов
/ 08 ноября 2010

Так что это немного странный запрос, но надеяться, что кто-то здесь знает какую-то командную строку fu. Возможно, нам придется публиковать сообщения и на сервере, мы увидим.

Я пытаюсь выяснить, как передать результаты запроса curl в приложение командной строки mysql. В общем, что-то вроде этого -

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

где этот URL возвращает в основном текстовый ответ с инструкциями sql.

Некоторый контекст:

Разрабатываемое мной приложение поддерживает несколько установок, в рамках процесса установки нового экземпляра мы запускаем копию нашей базы данных «data» для нового экземпляра.

Я пытаюсь максимально автоматизировать процесс развертывания, поэтому я собрал небольшое приложение «приборной панели» в рельсах, которое может генерировать операторы sql, файлы конфигурации и т. Д. Для каждого экземпляра, а также помогает нам просматривать статистику об экземплярах. и другие забавные вещи. Теперь я пишу задачи Capistrano, чтобы фактически выполнить развертывание на основе идентификатора установки, который я передаю как переменную.

Начальная настройка развертывания включает в себя создание базы данных приложений, что будет делать этот sql-запрос. Теоретически я мог вытащить файл в запросе wget, выполнить и удалить его, но я подумал, что будет лучше, если просто сказать удаленному серверу свернуть запрос и выполнить его за один шаг.

Так есть идеи?

Ответы [ 2 ]

2 голосов
/ 08 ноября 2010

В Bash вы можете выполнять замену процесса:

mysql ... < <(curl ...)
2 голосов
/ 08 ноября 2010

Я вполне уверен, что ваш синтаксис изначально не будет работать, так как '<' ожидает файл. Вместо этого вы хотите передать вывод curl, который по умолчанию печатает в STDOUT в mysql. Я считаю, что следующее будет работать для вас. </p>

curl http://localhost:3000/application.sql | mysql --user=root --password=my_pass 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...