我有一个SQL转储,我想通过ActiveRecord执行它我在尝试:

ActiveRecord::Base.connection.execute(File.read(sql_seeds))

但我有个错误:
rake aborted!
PG::Error: ERROR:  syntax error at or near "1"
LINE 18: 1 Shanghai 2012-12-20 10:31:31.350111 2012-12-20 10:31:31.35...

在SQL脚本的这一行:
COPY locations (id, description, created_at, updated_at) FROM stdin;
1       Shanghai        2012-12-20 10:31:31.350111      2012-12-20 10:31:31.350111

一些迹象:
ActiveRecord::Base.connection.execute("\\i #{sql_seeds}")不起作用,因为\i是一个psql命令(谢谢@Jiřipsšil和@RichardHuxton)
我不想使用%X( psql -U #{user} -H #{host} -P #{pass} ... ),因为我会使用已经存在的ActuvieRoD数据库连接。
我正在使用PostgreSQL 9.2。

最佳答案

问题是\ipsql的命令,而不是postgresql的命令。不能在查询中直接使用它另外,我也不知道导入工作时execute方法失败的原因。
我认为您将不得不退出,即使这意味着创建另一个数据库连接注意,不需要直接组装psql命令,可以使用db命令:

rails db < seeds.sql

这样您就可以在config/database.yml中为当前环境重用连接信息。

10-05 20:32
查看更多