Laravel Eloquentを使用して、古いMysqlデータベースの1つのテーブルから7Million行のデータをコピーし、新しいMysqlデータベースの異なるテーブルにこれらの行をコピーします。問題はこれを実行するのにおよそ1日かかり、私はこのアクションをほぼ80Mの行に対して再実行する必要があるということです。私は一度に1000データのチャンクを使用しています。それを行う方法はありますか もっと効率的ですか?ここ 私のコード:laravelのデータベースから百万行のデータを別のデータベースにコピーする
DB::connection('oldDataBase')->table('tableToCopy')->chunk(1000, function ($AllData){
foreach ($AllData as $Data){
DB::connection('newDataBase')->table('table1')->insert(
[
column1 => $Data->columnToCopy,
etc..
]);
DB::connection('newDataBase')->table('table2')->insert(
[
column1 => $Data->columnToCopy,
etc..
]);
DB::connection('newDataBase')->table('table3')->insert(
[
column1 => $Data->columnToCopy,
etc..
]);
}
});
これは単発コピーの場合は、sqldumpとして実行し、新しいデータベースに対して出力スクリプトを実行する方がよいでしょう。 – Andy
laravelで実行しないでください。 Laravelはクエリを実行してオブジェクトのコレクションに変換します。間違いなくオーバーヘッドが加算されます。 'mysqldump | mysql -e'またはmysqldbcopy'またはさらに簡単な 'create table like othertable'と' insert into table into other table'から選択してください – apokryfos
返事をお寄せいただきありがとうございます。 –