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

Join 使用ADO连接和查询文本文件,join,text-files,ado,Join,Text Files,Ado,我只是认为这是可以做到的,但我开始怀疑。第一件事是我注意到它不会采用我通常使用的语法,即使只有一个表(只是尝试使用最简单的语法) “不是有效名称-这是我遇到的错误。我可以从字段中删除文件名限定符,这样就可以了,但是,当我确实要加入时,我通常需要在加入部分使用这种语法: Inner Join [file_name2.txt] On [file_name.txt].[fieldname]=[file_name2.txt].[fieldname] 在这种情况下,它将提示err out为“无效的[fi

我只是认为这是可以做到的,但我开始怀疑。第一件事是我注意到它不会采用我通常使用的语法,即使只有一个表(只是尝试使用最简单的语法)

“不是有效名称-这是我遇到的错误。我可以从字段中删除文件名限定符,这样就可以了,但是,当我确实要加入时,我通常需要在加入部分使用这种语法:

Inner Join [file_name2.txt] On [file_name.txt].[fieldname]=[file_name2.txt].[fieldname]
在这种情况下,它将提示err out为“无效的[file_name.txt].[fieldname]括号”

我不确定这是一个问题。如果我尝试删除这里的文件名限定符,我会得到一个“连接表达式不受支持”错误

My schema.ini如下所示:

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

[file_name2.txt]
Format=Delimited(|)
ColNameHeader=True
Select tb1.[fieldname], tb2.[fieldname] From [file_name.txt] as tb1
Inner Join [file_name2.txt] as tb2
On tb1.[fieldname]=tb2.[fieldname]
我的连接字符串是:

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

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

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

因此,对字段名使用别名,如下所示:

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

[file_name2.txt]
Format=Delimited(|)
ColNameHeader=True
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]

文本驱动程序是一个很好的工具,尤其是在商业智能中对数据格式/文件进行无序处理时。

是的,你是对的,至少你的例子是对的。我在其他地方也找到了相同的答案。请注意,虽然解释不是你想说的,但我相信。本例中的文本驱动程序只理解字段名周围的括号,所以你必须为连接使用别名。是的。我输入了错别字。抱歉。应该是“字段名”。你修改了答案吗