AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

CVS-Import FireDAC

Ein Thema von Ghostwalker · begonnen am 20. Jun 2020 · letzter Beitrag vom 7. Okt 2020
Antwort Antwort
Seite 2 von 2     12
matthias250881

Registriert seit: 12. Dez 2017
1 Beiträge
 
#11

AW: CVS-Import FireDAC

  Alt 7. Okt 2020, 07:13
Danke für Info.
ich versteh davon nur Bahnhof.
könntest du mir ein Beispiel code geben??
Ich habe fireDAC batchmove in meinem vorhandenen code.

ich poste heute Abend wenn ich daheim bin mal code...




Wozu erst umständlich in ein DBGrid, anstatt direkt in ein DataSet/Query?

Naja, die CSV direkt in die Datenbank ist wohl das Bekannteste und sehr einfach.
Und dann nur noch ein INSERT/UPDATE+SELECT, um die Daten aus der Import-Tabelle in die Ziel-Tabelle zu kopieren, wo man nach Herzenslust auch Spalten weglassen oder weitere Spalten hinzufügen kann.
https://www.thewebhatesme.com/entwic...l-importieren/
https://www.mysqltutorial.org/import...e-mysql-table/

Oder eben über FireDAC-BatchMove (TFDBatchMove)
http://docwiki.embarcadero.com/CodeE...tchMove_Sample
http://codeverge.com/embarcadero.del...table1/1089699
https://stackoverflow.com/questions/...-a-fdtabletask


Ansonsten ein Query mit SELCET A, B, C FROM table und über DataSet.Insert, DataSet.Fields/FieldByName und DataSet.Post die Daten in die Datenbank übergeben.

Oder ein INSERT-Statement und dort ebenfalls mit DataSet.Params/ParamByName die Daten rein.


Die CSV, kann man mit einer speziellen CSV-Komponente lesen
oder einfach TStringList und jede Zeile über eine Split-Function (oder eine weitere TStringList mit StringList.DelimitedText) die einzelne Spalten zerlegen
und das dann ans DataSet/Query übergeben.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
4.795 Beiträge
 
Delphi 10.1 Berlin Professional
 
#12

AW: CVS-Import FireDAC

  Alt 7. Okt 2020, 07:44
Moin...
Zitat:
Oder eben über FireDAC-BatchMove (TFDBatchMove)
...eine Komponente auf die Form klatschen hat nichts mit lernen zu tun.
Zitat:
TStringList und jede Zeile über eine Split-Function (oder eine weitere TStringList mit StringList.DelimitedText) die einzelne Spalten zerlegen
und das dann ans DataSet/Query übergeben.
...das schon eher.

Informationen:
Stringlist: http://docwiki.embarcadero.com/Libra...es.TStringList
DelimitedText: http://docwiki.embarcadero.com/Libra....DelimitedText
oder Split: http://docwiki.embarcadero.com/Libra...ngHelper.Split

Beispielcode:

1. CSV von Platte in die StringList laden (gibt es eine Methode dafür TStringlist)
2. Stringlist durchlaufen
3. jede Zeile entweder splitten oder als DelimitedText in eine 2. Stringlist einlesen (dann hast du jedes Feld einzeln der Zeile)
4. SQL absetzen mit den Werten (! SQL Parameter https://www.delphipraxis.net/152692-...uebergabe.html)
5. ...fertsch

Zitat:
ich versteh davon nur Bahnhof.
"übersetze" mal den "Beispielcode" in echten und stelle das hier ein. Dann sehen wir weiter.

Geändert von haentschman ( 7. Okt 2020 um 07:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
38.570 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: CVS-Import FireDAC

  Alt 7. Okt 2020, 09:42
Tipp: StrictDelimiter nicht vergessen, sonst reagiert die StringList beim Zerlegen etwas "übereifrig",
aber das wurde ja eigentlich auch in der OH erwähnt. (ganz unten und da wir wissen, dass niemand die Hilfe liest, vor allem nicht bis zum Schluss)

Delphi-Quellcode:
SL.Delimiter := ','; // oder ; oder womit sonst die Werte in deiner CSV getrennt sind
SL.StrictDelimiter := True; // denn sonst wird als "Delimiter" auch das Leerzeichen und Tabulatoren benutzt.
//SL.QuoteChar := '"'; // ändern, falls es kein " ist, wie z.B. '
SL.DelimitedText := DieZeile;
SL.Lines[i] {oder} SL[i] // wie man auf die einzelnen -Zeilen- Spalten dann zugreift, sollte aber schon bekannt gewesen sein

PS: für jede einzelne Anzwort neu anmelden ist etwas übertrieben.
Im Notfall gibt es auch einen "Kennwort vergessen?"-Link.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu ( 7. Okt 2020 um 09:47 Uhr)
  Mit Zitat antworten Zitat
matthias25881

Registriert seit: 6. Okt 2020
3 Beiträge
 
#14

AW: CVS-Import FireDAC

  Alt 7. Okt 2020, 17:45
Hallo,
ich komm da irgendwie nicht draus... liegt vielleicht weil ich nur hobby bastler bin....

hier mal mein code.

procedure TForm1.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then
if opendialog1.FileName <> null then
begin
textreader1.FileName := opendialog1.FileName;
try
importfromcsv.Execute;
fdquery1.Close;
fdquery1.Open;
except
on E : Exception Do
ShowMessage(E.Message);
end;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
application.Terminate;
end;


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fdconnection1.Connected := false;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
fdconnection1.Connected := true;
fdquery1.Open;
end;

end.


Über datagrid bin ich nur gegangen weil ich ich mich nicht auskenne und da ein tut im internet gefunden habe....

Grüsse




Moin...
Zitat:
Oder eben über FireDAC-BatchMove (TFDBatchMove)
...eine Komponente auf die Form klatschen hat nichts mit lernen zu tun.
Zitat:
TStringList und jede Zeile über eine Split-Function (oder eine weitere TStringList mit StringList.DelimitedText) die einzelne Spalten zerlegen
und das dann ans DataSet/Query übergeben.
...das schon eher.

Informationen:
Stringlist: http://docwiki.embarcadero.com/Libra...es.TStringList
DelimitedText: http://docwiki.embarcadero.com/Libra....DelimitedText
oder Split: http://docwiki.embarcadero.com/Libra...ngHelper.Split

Beispielcode:

1. CSV von Platte in die StringList laden (gibt es eine Methode dafür TStringlist)
2. Stringlist durchlaufen
3. jede Zeile entweder splitten oder als DelimitedText in eine 2. Stringlist einlesen (dann hast du jedes Feld einzeln der Zeile)
4. SQL absetzen mit den Werten (! SQL Parameter https://www.delphipraxis.net/152692-...uebergabe.html)
5. ...fertsch

Zitat:
ich versteh davon nur Bahnhof.
"übersetze" mal den "Beispielcode" in echten und stelle das hier ein. Dann sehen wir weiter.
  Mit Zitat antworten Zitat
matthias25881

Registriert seit: 6. Okt 2020
3 Beiträge
 
#15

AW: CVS-Import FireDAC

  Alt 7. Okt 2020, 22:34
Hallo,
bin jetzt etwas weiter...
Bin jetzt am anderen Weg probieren.

Habe jetzt eine Form, ein FDconnection und FDquery.
In das SQL des Query habe ich das von hier (https://www.thewebhatesme.com/entwic...l-importieren/ ) etwas abgeändert geschrieben. Vom grund aus funktioniert es.

Wie kann ich denn einzelne Query machen.
Das wenn ich Button drücke


LOAD DATA LOCAL INFILE 'c:/test.csv' --> LoadfromFile
INTO TABLE tbldruck
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@dummy, zeit, @dummy, druck, temp)

SET projekt_n = 101110, leitung = 'Kälte' ---> projekt_n und leitung aus Textedit gelsen wird

und dann in DB geschrieben wird.

Vielleicht könnt ihr mir noch paar tips geben...

danke.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:00 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf