如何在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