我在开发中切换到Postgres,现在以下错误打破了一个测试用例:
PG::Error: ERROR: column "id" of relation "assets_content_nodes" does not exist
: SELECT pg_get_serial_sequence($1, $2)在开发和生产环境中也会发生同样的错误,但它不是show stopper,也不会影响导入。assets_content_nodes是一个连接表,我不想添加'id‘列。你知道为什么会发生这种情况吗?
发布于 2013-03-02 01:00:24
这在activerecord-import -v0.3.1 (或者可能是更早的版本,但它在0.2.11和更早的版本中被破坏)中得到了修复。您不再需要表上的id列来执行导入。
发布于 2013-03-02 01:42:44
您也可以尝试使用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“,所以如果这个过程被中断,而您只是从头开始,通常是可以的。
https://stackoverflow.com/questions/14823690
复制相似问题