从activerecord-import gem运行导入时,Postgres会抛出错误

时间:2013-02-12 00:46:12

标签: ruby-on-rails postgresql activerecord-import

我在开发中切换到Postgres,现在跟随错误打破了测试用例:

PG::Error: ERROR:  column "id" of relation "assets_content_nodes" does not exist
:           SELECT pg_get_serial_sequence($1, $2)

在开发和生产环境中发生相同的错误,但它不是显示停止并且不会影响导入。 assets_content_nodes是一个连接表,我宁愿不添加'id'列。 任何想法为什么会这样?

2 个答案:

答案 0 :(得分:1)

这在activerecord-import -v0.3.1中修复(或者可能是早期版本,但在0.2.11及更早版本中已被破坏)。您不再需要在表格上使用id列来进行导入。

答案 1 :(得分:0)

您也可以尝试Upsert

如果您正在进口宠物:

require 'csv'
require 'upsert'
u = Upsert.new Pet.connection, Pet.table_name
CSV.foreach('pets.csv', headers: :first_row) do |row|
  selector = { name: row['name'] }
  setter = row
  u.row selector, setter
end

我的测试显示它比activerecord-import快20-30%。因为它是“upserting”,所以如果进程被中断并且你刚刚从头开始重新开始就一般都可以。