activerecord-import

参考:

zdennis/activerecord-import: A library for bulk insertion of data into your database using ActiveRecord – GitHub

ドキュメント

参考:

Documentation for activerecord-import | RubyDoc.info

Class: ActiveRecord::Base — Documentation for activerecord-import | RubyDoc.info

zdennis/activerecord-import Wiki – GitHub

使い方

参考:

activerecord-import でバルクインサート / バルクアップデートする | コード日進月歩

ActiveRecord で複数レコード、BULK INSERT する方法とパフォーマンスについて – Qiita

activerecord-import の使い方 – Qiita

activerecord-import の import を速くする | 日々雑記

Rails で BULK INSERT する方法 | kurobara のブログ

activerecord-import を使って複数レコードを一括登録する (BULK INSERT) | Madogiwa Blog

バルク生成/更新

参考:

Updating / Creating Multiple records at the same time | SHIVA BHUSAL

on_duplicate_key_update

参考:

Rails でバルクインサート・アップデート – Qiita

activerecord-import でバルクインサート / バルクアップデートする | コード日進月歩

BULK INSERT、BULK UPDATE の実装方法 | ALL-IN Tech Blog

大量のデータ挿入・更新にバルクインサート・バックアップデートを利用する | 49hack

Duplicate Key Update – zdennis/activerecord-import – GitHub

num_inserts / ids

戻り値の num_inserts 及び ids は PostgreSQL でのみ利用することができる。

参考:

activerecord-import-0.15 系で気をつけること – Qiita

BULK INSERT の戻り値に PRIMARY KEY は返らない (activerecord-import) – Qiita

Return Info – zdennis/activerecord-import – GitHub

inserted id · Issue #94 · zdennis/activerecord-import – GitHub

Return inserted ids MySQL by robertomiranda · Pull Request #279 · zdennis/activerecord-import – GitHub

Return inserted ids for mysql bulk insert by a2ikm · Pull Request #487 · zdennis/activerecord-import – GitHub

How do I retrieve a list of created IDs for bulk insert in Active Record? – Stack Overflow

関連モデルを同時に保存する

参考:

activerecord-import を使用したバルクインサートで親子モデルの同時保存 | teratail

has_many associations don’t save with recursive: :true · Issue #247 · zdennis/activerecord-import – GitHub

関連モデルのバルク更新

参考:

How to do bulk update in rails on habtm association – Stack Overflow

import / import!

参考:

Method: ActiveRecord::Base.bulk_import — Documentation for activerecord-import | RubyDoc.info

bulk_import – activerecord-import/import.rb at v1.0.2 · zdennis/activerecord-import – GitHub

bulk_import! – activerecord-import/import.rb at v1.0.2 · zdennis/activerecord-import – GitHub

imsert_many

参考:

Method: ActiveRecord::Import::AbstractAdapter::InstanceMethods#insert_many — Documentation for activerecord-import | RubyDoc.info

Method: ActiveRecord::Import::SQLite3Adapter#insert_many — Documentation for activerecord-import | RubyDoc.info

Method: ActiveRecord::Import::MysqlAdapter#insert_many — Documentation for activerecord-import | RubyDoc.info

Method: ActiveRecord::Import::PostgreSQLAdapter#insert_many — Documentation for activerecord-import | RubyDoc.info

insert_many – activerecord-import/abstract_adapter.rb at v1.0.2 · zdennis/activerecord-import – GitHub

insert_many – activerecord-import/sqlite3_adapter.rb at v1.0.2 · zdennis/activerecord-import – GitHub

insert_many – activerecord-import/mysql_adapter.rb at v1.0.2 · zdennis/activerecord-import – GitHub

insert_many – activerecord-import/postgresql_adapter.rb at v1.0.2 · zdennis/activerecord-import – GitHub

ON CONFLICT 句でエラー

on_duplicate_key_update を使って UPSERT を行う際にエラーが発生する。

ON CONFLICT clause does not match any PRIMARY KEY or UNIQUE constraint

原因:

conflict_target に指定したカラムがプライマリキーもしくは UNIQUE 制約のあるカラムではない。

対処法:

conflict_target にプライマリキーもしくは UNIQUE 制約のあるカラムを指定する。

参考:

ON CONFLICT clause | SQLite Query Language [Official]

Insert or update entry but fail on unique constraint violation – Stack Overflow

insert_all / upsert_all

Ruby on Rails が標準で対応したバルクインサート/アップサート。Rails 6.0 以降で使用可能。

参考:

insert_all – ActiveRecord::Persistence::ClassMethods | Ruby on Rails API (Edge) [Official]

upsert_all – ActiveRecord::Persistence::ClassMethods | Ruby on Rails API (Edge) [Official]

insert_all – rails/persistence.rb at v6.0.0.rc1 · rails/rails – GitHub

upsert_all – rails/persistence.rb at v6.0.0.rc1 · rails/rails – GitHub

rails/insert_all.rb at v6.0.0.rc1 · rails/rails – GitHub

Add insert_many to ActiveRecord models by boblail · Pull Request #35077 · rails/rails – GitHub

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です