2016-09-28 12 views
0

ExcelからAccess(〜800kライン)にインポートする必要がある膨大なデータセットがあります。しかし、実際のデータセットの90%のような特定の列値を持つ行は無視できます。実際には、私は実際にインポートされた行の10%のようにしか必要ありません。これは、すべて単一のラインaの限りにwaaayとる〜800KラインでVBA経由でExcelから巨大なデータセットをExcelにインポート

For i = 1 To EOF 
    sql = "Insert Into [Table] (Column1, Column2) VALUES ('" & _ 
    xlSheet.Cells(i, 1).Value & " ', '" & _ 
    xlSheet.Cells(i, 2).Value & "');"  
Next i 
DoCmd.RunSQL sql 

:過去には

は、私は、Excelファイルの行ごとに以下のように(擬似コード)を輸入してきましたクエリが作成され、実行されます。

私はラインの90%も無視できるという事実を考慮して、ExcelからAccessにデータセットをインポートする最も速いアプローチは何ですか?

フィルターを有効にして一時的なExcelファイルを作成しようと考えていました。そして、私はフィルタリングされたExcelをインポートするだけです。

しかし、これよりも優れた/より速いアプローチがありますか?また、VBAアクセス経由でExcelをインポートする最速の方法は何ですか?

ありがとうございます。

+0

VB.NETはvbaではありません。タグ上でそうだと言います。 – Plutonix

+0

1.)90%の回線を削除して、処理しているデータを減らすことはできますか? 2)これは1回限りの操作ですか、それとも何度も繰り返しますか?これにより、ソリューションの堅牢性が変わります。通常、RDBMSを使用すると、Excel、CSV、XMLなどからデータベース表にインポートできます。これは手作業ですが、一度だけ必要な場合は、最も簡単で簡単な方法です... –

+0

ADOを使用してExcelシートをクエリし、ADOとSQLを使用してクエリを実行できます。 –

答えて

1

インポートのために特別なアクセスクエリを実行することを検討してください。次のSQLをAccessクエリウィンドウに追加するか、またはDAO/ADO接続のSQLクエリとして追加します。前の最終に(行の90%を除去するため)あなたはステージング一時テーブルを必要とする場合に、テーブル作成クエリを実行し、また

INSERT INTO [Table] (Column1, Column2) 
SELECT * 
FROM [Excel 12.0 Xml;HDR=No;Database=C:\Path\To\Workbook.xlsx].[SHEET1$]; 

:今HDR:Noに設定するという名前の列ヘッダを、必要とするWHERE条項を含みます存在する場合は、テーブルが、このクエリを注意して行うには、テーブルを置き換えます。

SELECT * INTO [NewTable] 
FROM [Excel 12.0 Xml;HDR=No;Database=C:\Path\To\Workbook.xlsx].[SHEET1$]; 
+0

行ごとにDAOを使用すると、速度が大幅に向上しました。ありがとう! – CoffeeCups

+0

恐ろしく! SQLでは、反復的ではなく、一度にジョブが処理されます。お役に立てて嬉しいです。 – Parfait

0

あなたのコードのわずかな変化があなたのためのフィルタリングを行います。

Dim strTest As String 
For i = 1 To EOF 
    strTest=xlSheet.Cells(i, 1).Value 
    if Nz(strTest)<>"" Then 
     sql = "Insert Into [Table] (Column1, Column2) VALUES ('" & _ 
     strTest & " ', '" & _ 
     xlSheet.Cells(i, 2).Value & "');" 
      DoCmd.RunSQL sql 
     End If 
Next i 

I assuループ外のRunSQLを持っている私はあなたの擬似コードでは間違いでした。これは、最初の列のセルが空であることをテストしますが、状況に応じて任意の条件に置き換えることができます。

+0

入力いただきありがとうございます、残念ながら、このアプローチはまだdaoに行くよりもはるかに低速でした – CoffeeCups

関連する問題