2017-05-20 18 views
0

私はStackOverflowの新機能であり、エキスパートコーダーではありません。私はレコードセット(Recordset.Openメソッド)としてタブで区切られたファイル(160kレコード、約20列)を1秒以内に読み込むためにVBAサブを作成しました。レコードセット(DAOまたはADO)をテーブルに素早く移動する方法

それから、いくつかのクエリでさらに処理するために、MS Access 2013テーブルに移動する必要があります。 DoCmd.Importメソッドをテーブルに実行すると、約1000秒(x2000より長く)かかります

すべてのレコードをレコードセットからテーブル(存在するかどうか)に移動する方法はありますか?一度にレコードを追加しますか?

おかげ

+0

は確かに、 'DoCmd.Import'方法は、単にレコードセットにcsvファイルをロードするよりも多くの作業を行います。 Accessメソッドは、定義されたテーブルスキーマに追加する必要があります。 – Parfait

答えて

4

直接ファイルの期間修飾子でテキストファイルを含むフォルダを照会Accessクエリからtext fileを照会考えてみましょう。これはJet/ACE SQL Engineのユニークな機能です(他のデータベースには準拠していません)。あなたは適切に区切られた形式を定義するには、タブ区切りのファイルと同じディレクトリにschema.iniファイルを作成する必要があります。

のSchema.ini(タブファイルと同じフォルダに保存します。このことなく、すべてのデータが1列に来ます)

[myTabFile.txt] 
ColNameHeader=True 
CharacterSet=65001 
Format=TabDelimited   

追加クエリ

INSERT INTO myCurrentTable (Col1, Col2, Col3, Col4, Col5) 
SELECT t.Col1, t.Col2, t.Col3, t.Col4, t.Col5 
FROM [text;HDR=Yes;FMT=Delimited;Database=C:\Path\To\Text\File].myTabFile.txt t; 

テーブル作成クエリ

SELECT t.Col1, t.Col2, t.Col3, t.Col4, t.Col5 
INTO myNewTable 
FROM [text;HDR=Yes;FMT=Delimited;Database=C:\Path\To\Text\File].myTabFile.txt t; 
+0

WOW !!!それはまさにそれです。電光石火!!どうもありがとうございました!! – Davide

+0

ハハ...私は助けることができてうれしい! – Parfait

+0

@Parfait私がテストしているDBでは、「select * from anotherTable」は、「anotherTableからテーブルを選択」して新しいテーブルを作成するときに、1行だけを挿入するだけで、すべての行を挿入します。何故ですか? – MVAmorim

関連する問題