SQL Insert ステートメントを使用して Excel から Access にデータを効率的に転送する
Excel VBA コードでは、次の各行を手動でループしていました。データを使用して、Access テーブルに値を挿入します。このアプローチは小規模なデータセットには機能しますが、25,000 レコードのような大規模なデータセットでは非効率的になります。
代わりに、SQL INSERT ステートメントを利用して複数の行を一度に挿入し、処理時間を大幅に短縮できます。次の修正されたコードは、次の方法を示しています。
Public Sub DoTrans() Set cn = CreateObject("ADODB.Connection") dbPath = Application.ActiveWorkbook.Path & "\FDData.mdb" dbWb = Application.ActiveWorkbook.FullName dbWs = Application.ActiveSheet.Name scn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath dsh = "[" & Application.ActiveSheet.Name & "$]" cn.Open scn ssql = "INSERT INTO fdFolio ([fdName], [fdOne], [fdTwo]) " ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh cn.Execute ssql End Sub
11 行目に示されている SQL INSERT ステートメントを使用することにより、Excel 範囲のすべての行が一度に Access テーブルに挿入されます。これにより、ループの必要性がなくなり、パフォーマンスが大幅に向上します。
「SELECT *」を使用する代わりにフィールド名を指定したいと述べましたが、提供されたコードはそれを示していません。特定のフィールド名の設定についてサポートが必要な場合は、希望のフィールド名を入力してください。それに応じてコードを変更するお手伝いをいたします。
以上がSQL を使用して大規模なデータセットを Excel から Access に効率的に転送するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。