2017-02-02 7 views
0

Ich nahm an, dass dies getan werden könnte, aber ich beginne mich zu fragen. Die erste Sache ist, ich bin zu bemerken, es wird nicht die Syntax nehme ich normalerweise verwenden würde, auch mit einer einzigen Tabelle (nur bis auf die möglichst einfache Syntax zu bekommen versuchen)Verwenden von ADO zum Verbinden und Abfragen von Textdateien

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

"ist kein gültiger Name - Das ist der Fehler, den ich bekomme.Ich könnte nur den Dateinamen-Qualifier aus dem Feld entfernen, und es wäre in Ordnung, aber wenn ich gehe, um beizutreten, würde ich normalerweise diese Art von Syntax in der Join-Teil verwenden müssen:

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

wobei in diesem Fall sagen, dass es für err out "ungültig Klammerung von [file_name.txt]. [Feldname]"

Ich bin mir nicht sicher, warum das ein Problem ist. Wenn ich versuche, die Dateinamenqualifizierer hier herauszunehmen, erhalte ich den Fehler "Join-Ausdruck nicht unterstützt".

Mein schema.ini sieht wie folgt aus:

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

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

Meine Verbindungszeichenfolge ist:

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

So frage ich mich, ob dies überhaupt möglich ist.

Antwort

1

Ja. Es ist möglich und es funktioniert. Ich war fasziniert von Ihrer Frage, also habe ich es selbst ausprobiert. Der Texttreiber versteht die Klammern für die Feldnamen nicht, nur für den Tabellennamen.

So Aliase für die Feldnamen wie folgt aus:

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

Was für mich gearbeitet:

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] 

Text-Treiber ist ein schickes Tool vor allem, wenn schlurfenden Datenformate/Dateien um für Business Intelligence .

+0

Ja, Sie haben Recht, zumindest Ihr Beispiel ist. Ich habe die gleiche Antwort woanders gefunden. Beachten Sie jedoch, dass die Erklärung nicht das ist, was Sie sagen wollten, glaube ich. Der Texttreiber versteht in diesem Fall Klammern nur um Feldnamen, daher müssen Sie einen Alias ​​für die Joins verwenden. – tbaker818

+0

Ja. Tippfehler meinerseits. Entschuldigung. Sollte "Feldnamen" gewesen sein. Habe die Antwort geändert – Yemoku

Verwandte Themen