如何在heroku上执行.sql脚本?
我有一个.sql文件与一堆插入命令,我想在我的postgres数据库上执行heroku。 但我不知道该怎么做:
如果我有权访问postgres控制台,我会input以下内容:
psql -h localhost -d database -U username -f datafile.sql
但似乎heroku不支持这个命令。 我试过了
heroku pg:psql
但是这不会让我input一个文件。
还有其他的select吗?
对于像种子数据库这样的东西,我build议理查德·布朗的答案是:你可以说使用Rails种子机制或类似rake任务的脚本更好。
这就是说,能够pipesql(原始的,或文件)是一个有用的function,特别是对于幂等的东西,如简单的查找或常规查询。 在这种情况下,您可以使用以下任何一种方式执行本地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
我喜欢可testing和可重复的更新。 当我需要更新数据库时,我写一个rake任务来执行更新; 通过这种方式,您可以首先针对testing运行它,以确保在生产运行之前的输出是正确的。
你不要提到这是一个初始的数据库加载还是稍后运行,但是将新的数据加载到Rails数据库的惯例是创build一个db:seed
rake文件,你可以在db:migrate
任务完成后执行。
参见: http : //justinfrench.com/notebook/a-custom-rake-task-to-reset-and-seed-your-database And: http : //railscasts.com/episodes/179-seed-data