我是StackOverflow的新手,而不是专家编码员。我已经创建了一个VBA子程序,可以在不到一秒的时间内将一个以制表符分隔的文件(160k记录,大约20列)作为记录集(Recordset.Open
方法)加载。
然后,我需要将其移动到MS Access 2013表中,以便使用多个查询进行进一步处理。如果我在表中运行DoCmd.Import
方法,则需要大约1000秒(x2000更长)
有没有办法将记录集中的所有记录移动到表(现有或不存在)中,然后遍历整个记录集并一次追加记录?
由于
答案 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;