我在开发中切换到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"列。你知道为什么会发生这种情况吗?
这在activerecord import-v0.3.1中得到了修复(或者可能是早期版本,但在0.2.11及更早版本中被破坏)。您不再需要表上的id
列来执行导入。
您也可以尝试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
我的测试显示它是20–比CCD_ 3快30%。由于这是"扰乱销售",如果流程被中断,而你只是从头开始,这通常是可以的。