我只是假设这可以做到,但我开始怀疑。第一件事是我注意到它不会采用我通常使用的语法,即使只有一个表(只是试图找到最简单的语法)
Select [file_name.txt].[fieldname] From [file_name.txt]
“不是一个有效的名字 - 这是我得到的错误。我可以从字段中删除文件名限定符并且没关系,但是,当我去加入时,我通常需要使用这种类型连接部分中的语法:
Inner Join [file_name2.txt] On [file_name.txt].[fieldname]=[file_name2.txt].[fieldname]
在这种情况下,它会告诉错误“[file_name.txt]的无效包围。[fieldname]”
我不确定为什么这是一个问题。如果我尝试在这里取出文件名限定符,我会得到一个“不支持连接表达式”错误。
我的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"""
所以我想知道这是否可能。
答案 0 :(得分:1)
是。它是可能的,它的工作原理。我被你的问题所吸引,所以我自己试了一下。文本驱动程序无法理解字段名称上的包围,仅限于表名。
因此,对字段名称使用别名,如下所示:
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]
文本驱动程序是一个非常好的工具,尤其是在为商业智能改组数据格式/文件时。