使用 ADO 连接和查询文本文件

Using ADO to join and query text files

我只是假设这可以完成,但我开始怀疑。第一件事是我注意到它不会采用我通常使用的语法,即使使用单个 table(只是试图使用最简单的语法)

Select [file_name.txt].[fieldname] From [file_name.txt]

" is not a valid name - 这是我得到的错误。我可以从字段中删除文件名限定符,这样就可以了,但是,当我去加入时,我通常需要使用连接部分的这种语法:

Inner Join [file_name2.txt] On [file_name.txt].[fieldname]=[file_name2.txt].[fieldname]

在这种情况下它会为 "invalid bracketing of [file_name.txt].[fieldname]"

报错

我不确定为什么这是个问题。如果我尝试在此处取出文件名限定符,则会收到 "join expression not supported" 错误。

我的 schema.ini 看起来像这样:

[file_name.txt]
Format=Delimited(|)
ColNameHeader=True

[file_name2.txt]
Format=Delimited(|)
ColNameHeader=True

我的连接字符串是:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="C:\Path"
;Extended Properties=""text;HDR=Yes"""

所以我想知道这是否可能。

是的。这是可能的并且有效。我对你的问题很感兴趣,所以我自己试了一下。文本驱动程序不理解字段名的括号,只理解 table 名称。

所以像这样为字段名称使用别名:

Select tb1.[fieldname], tb2.[fieldname] From [file_name.txt] as tb1
Inner Join [file_name2.txt] as tb2
On tb1.[fieldname]=tb2.[fieldname]

对我有用的:

SELECT tb1.[Month], tb2.[Year] FROM [Text;DATABASE=E:\].[MoneyAndCreditStats 0409 to 0417.csv] as tb1
 INNER JOIN  [Text;DATABASE=E:\].[StackaOverFlowTest.csv] as tb2 ON
tb2.[Month] = tb1.[Month] AND
tb1.[Year] = tb2.[Year]

文本驱动程序是一个很棒的工具,尤其是在为商业智能整理数据时 formats/files。