我在开发中切换到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'列。 任何想法为什么会这样?
答案 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”,所以如果进程被中断并且你刚刚从头开始重新开始就一般都可以。