使用 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。
我只是假设这可以完成,但我开始怀疑。第一件事是我注意到它不会采用我通常使用的语法,即使使用单个 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。