как выполнить скрипт. sql на heroku?
у меня есть .sql-файл с кучей команд вставки, которые я хочу выполнить в своей базе данных postgres на heroku. Но я не знаю как это сделать:-
Если бы у меня был доступ к консоли postgres, я бы набрал следующее:
psql -h localhost -d database -U username -f datafile.sql
но похоже, что heroku не поддерживает эту команду. Я пробовал с
heroku pg:psql
но это не позволяет мне ввести файл.
есть ли другие варианты?
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