将记录集(DAO或ADO)移动到表

时间:2017-05-20 11:04:01

标签: vba csv ms-access access-vba recordset

我是StackOverflow的新手,而不是专家编码员。我已经创建了一个VBA子程序,可以在不到一秒的时间内将一个以制表符分隔的文件(160k记录,大约20列)作为记录集(Recordset.Open方法)加载。

然后,我需要将其移动到MS Access 2013表中,以便使用多个查询进行进一步处理。如果我在表中运行DoCmd.Import方法,则需要大约1000秒(x2000更长)

有没有办法将记录集中的所有记录移动到表(现有或不存在)中,然后遍历整个记录集并一次追加记录?

由于

1 个答案:

答案 0 :(得分:4)

考虑直接从Access查询中查询text file,在该查询中,您查询包含文件的句点限定符的文件夹的文件夹。这是Jet / ACE SQL引擎的一个独特功能(在其他数据库中不兼容)。您可能需要在与制表符分隔的文件相同的目录中创建schema.ini文件,以正确定义分隔格式:

Schema.ini (保存在与标签文件相同的文件夹中;如果没有,则所有数据都放在一列中)

[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;