как выполнить скрипт. sql на heroku?


у меня есть .sql-файл с кучей команд вставки, которые я хочу выполнить в своей базе данных postgres на heroku. Но я не знаю как это сделать:-

Если бы у меня был доступ к консоли postgres, я бы набрал следующее:

psql -h localhost -d database -U username -f datafile.sql

но похоже, что heroku не поддерживает эту команду. Я пробовал с

heroku pg:psql

но это не позволяет мне ввести файл.

есть ли другие варианты?

3 54

3 ответа:

для таких вещей, как заполнение базы данных, я рекомендую ответ Ричарда Брауна: вам, возможно, лучше использовать что-то вроде механизма Rails seeds или что-то, написанное как задача rake.

тем не менее, возможность передавать sql (raw или файл) является полезной функцией, особенно для идемпотентных вещей, таких как простые поисковые запросы или рутинные запросы. В этом случае вы можете выполнить локальный SQL с любым из следующих:

$ cat file.sql | heroku pg:psql --app app_name
$ echo "select * from table;" | heroku pg:psql --app app_name
$ heroku pg:psql --app app_name < file.sql

Почему бы просто не использовать psql?

если вы посмотрите на выходе heroku config вы увидите URL-адреса базы данных (ключ DATABASE_URL), которые использует ваше приложение - если вы возьмете это и разобьете их на правильные биты для использования с psql все будет хорошо.

например

DATABASE_URL:  postgres://username:password@host:port/dbname

становится

psql -h host -p port -d dbname -U username -f datafile.sql

мне нравятся обновления, которые можно проверить и повторить. Когда мне нужно обновить базу данных, я пишу задачу rake для выполнения обновления; таким образом, вы можете сначала запустить ее против теста, чтобы гарантировать правильность вывода перед запуском в производство.

вы не упоминаете, если это начальная загрузка базы данных или один запуск позже, но Соглашение для загрузки свежих данных в базу данных Rails заключается в создании db:seed rake файл, который вы можете выполнить после вашего db:migrate задача сделанный.

см.:http://justinfrench.com/notebook/a-custom-rake-task-to-reset-and-seed-your-database И: http://railscasts.com/episodes/179-seed-data