![]() |
Datenbank: - • Version: - • Zugriff über: -
CSV Dateiinahlt direkt ins TADODataSet schreiben?
Moin,
ist es möglich, Daten aus der Textdatei z.B. CSV direkt in ein TADODataSet zu schreiben ohne das man mit einem SQL Server verbunden ist. Und kann man dann die normalen SQL Statements absetzen gegen die Daten in dem DataSet? Vielen Dank im Voraus. Sven |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
AFAIK nein. Diese In-Memory-Database hat MS erst mit .NET (ADO.NET) realisiert.
|
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Du kannst es aber in ein CSVDataSet schreiben und dieses an ein AdoDataSet übertragen
|
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Das geht auch komplett direkt mit der Möglichkeit per SQL-Befehlen drauf loszugehen.
1. Im entsprechenden Verzeichnis eine " ![]() 2. Die Komponente TADOConnection mit folgenden Eigenschaften:
Delphi-Quellcode:
Mit TADOQuery oder TADOTable kannst du jetzt auf die Daten zugreifen. Hierbei sind einige grundlegende SQL-Befehle möglich.
ADOConnection1.ConnectionString := 'Driver={Microsoft Text-Treiber (*.txt; *.csv)};Extensions=asc,csv,tab,txt;';
ADOConnection1.LoginPrompt := False; ADOConnection1.DefaultDatabase := ''; // Hier kommt der Pfad zu den CSV-Dateien rein UNION, GROUP etc. [EDIT]Der Zugriff auf die Daten kann ausschließlich lesend erfolgen! |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Danke für die Antworten. Die Antwort von Sir Rufo ist sehr interessant und werde ich probieren.
Schönen Abend euch noch. Sven |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
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:
Der Fehler lautet:
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; Zitat:
Ich habe dann mal Google befragt und folgende Möglichkeit gefunden.
Delphi-Quellcode:
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.
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; Habt ihr da eventuell ne Lösung? Die Daten landen letztendlich in einem VST. |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Die Angabe des ConnectionString ist leider nicht ganz korrekt.
Delphi-Quellcode:
Da hast du das Semikolon hinter
'Driver={Microsoft Text-Treiber (*.txt; *.csv)};Extensions=asc,csv,tab,txt;';
Code:
vergessen.
,txt
Ja, der ist da sehr zimperlich ;) |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Ok, das Semikolon habe ich eingefügt, leider habe ich immer noch die Fehlermeldung.
Muss der Driver / Provider erst installiert werden? Wie gesagt, wenn ich mir eine *.udl Datei mache, kann ich den Provider kein Microsoft Text Treiber finden. Woran kann es denn noch liegen? Mit dem Provider Microsoft.Jet.OLEDB.4.0 funktioniert es ja. Hast du denn eventuell ein funktionierendes Beispiel, welches ich mal testen könnte? Vielen Dank im Voraus. |
AW: CSV Dateiinahlt direkt ins TADODataSet schreiben?
Liste der Anhänge anzeigen (Anzahl: 1)
Versuch es mal mit diesem Projekt (Source & EXE).
Interessant dabei ist:
BTW: Die "schema.ini" habe ich nicht vergessen. Dieses Beispiel funktioniert auch ohne "schema.ini" EDIT So, ich nehme mal alles soweit zurück :mrgreen: Das Projekt läuft jetzt einwandfrei ohne Zicken. Die Lösung dabei ist, dass man bei "DefaultDatabase" ein Verzeichnis eintragen muss und keinen Pfad (ich sach ja, ist zickig) Dieses ist ein Pfad
Code:
und das ein Verzeichnis
C:\Data\
Code:
.
C:\Data
Jetzt klappt es auch mit dem Nachbarn ohne die Exception |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz