0

開発中に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」列を追加したくありません。なぜこれが起こっているのか考えはありますか?

4

2 に答える 2

1

これはactiverecord-import -v0.3.1で修正されています(またはそれ以前のバージョンの可能性がありますが、0.2.11 以前では壊れていました)。idインポートを行うためにテーブルに列が必要なくなりました。

于 2013-03-01T17:00:23.887 に答える
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

私のテストでは、 よりも 20 ~ 30% 高速であることが示されていactiverecord-importます。「upserting」であるため、プロセスが中断されて最初からやり直すだけであれば、通常は問題ありません。

于 2013-03-01T17:42:43.977 に答える