前提:
laravel 5.5
読み取り専用のpostgresqlから、mysqlのテーブルにデータをupsertしたいです。
postgresqlにはsqlを発行することができますが、updateやinsertなどはできません。
postgresqlのテーブル名 = table1
mysqlのテーブル名 = table2
であり、それぞれのテーブルに紐づいたeloquantモデルがlaravelプロジェクト内に存在します。
postgresqlのカラム名はcolumn1, column2, column3で
mysqlのカラム名はid, column_no1, column_no2, karamu3
のように、カラム名がそれぞれ異なります。
また、postgresql側にはidがありません。
upsertしたいレコードの数は100万程度となっています。
現状思いついているのは
- クエリビルダでtable1のデータをchunk(1000件)で取得する。
- 1000件に対して一つずつupdateOrCreateで存在を確認し、table2に代入する。
なのですが、結局2においてクエリが1000件*160=160万回飛ぶため実行時間が長くなっています。
可能であれば、1回のクエリで1000件のデータに対して存在するかどうか確認し、バルクインサートを行いたいです。
どのようにすれば良いでしょうか。回答よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/16 06:20
2021/10/16 09:30 編集
2021/10/19 14:18