Einzelnen Beitrag anzeigen

Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#6

AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?

  Alt 18. Sep 2010, 22:57
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.
  Mit Zitat antworten Zitat