4

asp.net/C# を使用して Excel シートを読み取り、すべてのレコードを mysql テーブルに挿入する必要があるという要件があります。Excel シートは、約 2000 行と 50 列で構成されています。現在、Excel レコードを読み取る際に、prepare ステートメントを使用してレコードを 1 つずつ mysql テーブルに挿入していますが、データが膨大なため、これを行うのに約 70 秒かかります。

また、新しいデータ行を作成し、各セルに値を割り当て、結果のデータ行をデータテーブルに追加し、最後に dataadapter.update(...) を呼び出すことも考えました。 ' データ行に 50 個の値を割り当てる必要があります。

挿入のパフォーマンスを向上させるための代替手段があるかどうか、誰かが提案してもらえますか?

ありがとう

4

1 に答える 1

2

MySQL LOAD DATA INFILEは MS SQL の BULK INSERT に似ており、最高のパフォーマンスが得られます。

Excel セルをループしながらテキスト ファイルを連結できますが、パフォーマンスを向上させるには、Excel からファイルを一度にエクスポートしてみてください。エクスポート ファイル (区切り記号など) をどのように調整する必要があるかわかりません。

編集:

または、このようなことを試す胃/時間がない場合は、少なくとも、できるだけ多くの VALUES 行を単一の INSERT ステートメントに渡します。

INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9); (これも MySQL サイトから。)

5000 が理論上の限界を超えているかどうかはわかりませんが、おそらく? -- したがって、ステートメントごとにおそらく 100 個の挿入を組み立ててから実行します。

いずれにせよ、コマンドごとに 1 回挿入するというアプローチは、コストがかかるものです。

于 2010-06-02T01:25:19.573 に答える