【问题标题】:Postgres throws error when running import from activerecord-import gem从 activerecord-import gem 运行导入时 Postgres 抛出错误
【发布时间】:2013-02-12 00:46:11
【问题描述】:

我在开发中切换到 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”列。 任何想法为什么会发生这种情况?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你也可以试试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%。由于它是“更新插入”,因此如果该过程被中断并且您从头开始重新开始,通常是可以的。

      【讨论】:

        猜你喜欢
        • 2023-03-13
        • 2012-08-24
        • 2010-09-14
        • 1970-01-01
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多