1

したがって、基本的には、タイムスタンプやその他のものを含む JSON データを含むテキスト ファイルのみを含む 1 ギグ データ ファイル (圧縮) がたくさんあります。

PHP コードを使用して、このデータを MYSQL データベースに挿入します。

これらのテキスト ファイルをメモリに保存することはできません。そのため、各データ ファイルを 1 行ずつ処理する必要があります。これを行うには、stream_get_line() を使用しています。

  • 含まれるデータの一部は更新され、一部は挿入されます。

質問 Insert / Select / Update ステートメントを使用するか、CSV ファイルを作成してそのようにインポートする方が高速ですか?

一括操作のファイルを作成し、SQL から実行しますか?

基本的に、存在しない主キーを持つデータを挿入し、主キーが存在する場合はデータのフィールドを更新する必要があります。しかし、私はこれを大量に行うつもりです。

パフォーマンスは常に問題です。

更新 テーブルには22,000列があり、そのうち10〜20列に0が含まれていないと言うだけです.

4

1 に答える 1

0

すべてのデータを一時テーブルにロードし、mysql に面倒な作業を任せます。

  1. 実行して一時テーブルを作成しますcreate table temp_table as select * from live_table where 1=0;

  2. ファイルを読み取り、 での読み込みと互換性のあるデータ プロダクトを作成しますload data infile

  3. データを一時テーブルにロードし、主キーのインデックスを追加します

  4. 次に、ライブ テーブルと一時テーブルの間で内部クエリを実行して、更新を分離します。ウォークスルーして更新を行います。

  5. 一時テーブルからすべての更新を削除します (ここでも、一時テーブルとライブ テーブルの間の内部結合を使用します)。

  6. select * from temp_table として live_table への単純な挿入ですべての挿入を処理します。

  7. 仮のテーブルを置いて、家に帰って冷ややかな飲み物を飲みましょう。

これはあなたのユースケースでは単純化しすぎているかもしれませんが、少し調整するだけでうまくいくはずです。

于 2013-05-27T20:01:22.280 に答える