So, ich habe das jetzt mal mit der Treiber probiert. Ich bekomme immer eine Fehlermeldung und ich kann sie nicht richtig interpretieren und den Fehler lösen. Hier mein Code:
Meine Schema.ini (im selben Verzeichnis)
Code:
[S510F_DELIVERY_PERF.TXT]
ColNameHeader = False
Format=Delimited(|)
Col1=b_nr Text
..
Delphi-Quellcode:
SQLConnection.ConnectionString := '
Driver={Microsoft Text-Treiber (*.txt; *.csv)};Extensions=asc,csv,tab,txt';
SQLConnection.LoginPrompt := False;
SQLConnection.DefaultDatabase := ExtractFilePath(OpenTextFileDialog.FileName);
// Hier kommt der Pfad zu den CSV-Dateien rein
SQLConnection.Open
// --> Hier kommt die Fehlermeldung
DSData.CommandText := '
Select * From S510F_DELIVERY_PERF.TXT';
DSData.Open;
Der Fehler lautet:
Zitat:
..ist eine
Exception der Klasse EOleException mit der Meldung 'Ungültiges Attribut für die Verbindungszeichenfolge' aufgetreten.
Ich habe mir dann mit einer *.udl Datei mal meine Provider angeschaut und ich kann keine Microsoft Text-Treiber finden. Ist das schon die Ursache?
Ich habe dann mal Google befragt und folgende Möglichkeit gefunden.
Delphi-Quellcode:
SQLConnection.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;' +
'Data Source="'+ExtractFilePath(OpenTextFileDialog.FileName)+'"; ' +
'Extended Properties="text;HDR=NO"';
SQLConnection.Open;
DSData.LockType := ltReadOnly;
DSData.CommandType := cmdText;
DSData.CommandText := 'Select * From S510F_DELIVERY_PERF.TXT';
DSData.Open;
Diese Methode funktioniert, ist aber sehr langsam. 5 Minuten für ca. 42000 Datensätze ist zu lange. Wenn ich die Datei einfach Zeile für Zeile lese und jedesmal die Zeile nach "|" splitte, geht es in Sekunden.
Habt ihr da eventuell ne Lösung? Die Daten landen letztendlich in einem VST.