发布
社区首页 >问答首页 >通过ActiveRecord调用Postgre转储

通过ActiveRecord调用Postgre转储
EN

Stack Overflow用户
提问于 2013-01-09 11:22:35
回答 2查看 671关注 0票数 1

我有一个SQL,我希望通过ActiveRecord执行这个转储。我在尝试这个:

代码语言:javascript
代码运行次数:0
复制
ActiveRecord::Base.connection.execute(File.read(sql_seeds))

但我知道这个错误:

代码语言:javascript
代码运行次数:0
复制
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脚本的这一行:

代码语言:javascript
代码运行次数:0
复制
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}")无法工作,因为\ipsql命令(谢谢@JiříPospíšil和@RichardHuxton)
  • 我不想使用%X( psql -U #{user} -H #{host} -P #{pass} ... ),因为我会使用已经存在的ActiveRecord数据库连接。
  • 我使用的是PostgreSQL 9.2。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-09 13:31:39

问题是COPY FROM stdin;使用pg_dump --inserts进行编辑解决了这个问题。

票数 1
EN

Stack Overflow用户

发布于 2013-01-09 12:11:34

问题在于,\ipsql的命令,而不是postgresql的命令。您不能在查询中直接使用它。而且,我也不知道为什么execute方法会在导入工作时失败。

我认为您将不得不执行,即使这意味着创建另一个db连接。注意,您不需要直接组装psql命令,您可以使用db命令:

代码语言:javascript
代码运行次数:0
复制
rails db < seeds.sql

通过这种方式,您可以在当前环境中重用config/database.yml中的连接信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14234133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档