Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Effiziente Synchronisation Datenbank CSV-Datei (https://www.delphipraxis.net/129435-effiziente-synchronisation-datenbank-csv-datei.html)

Grolle 19. Feb 2009 07:29

Datenbank: ADS • Version: 9 • Zugriff über: TDataSet

Effiziente Synchronisation Datenbank CSV-Datei
 
Hallo,

ich suche einen Lösungsansatz, um eine Datenbank mit einer CSV-Datei abzugleichen (Adressen aktualisieren).Im Moment stehe ich etwas auf dem Schlauch :gruebel:

Viele Grüße ...

mkinzler 19. Feb 2009 07:33

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Z.B. mit der Hilfe eines CSV-DataSets wie z.B. dem der JVCL

Grolle 19. Feb 2009 08:04

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Hi,
Zitat:

Zitat von mkinzler
Z.B. mit der Hilfe eines CSV-DataSets wie z.B. dem der JVCL

Gibt es noch einen anderen Weg, oder kann man das DataSet auch einzeln installieren?

Viele Grüße ...

mkinzler 19. Feb 2009 08:08

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Es gibt vielleicht auch Andere
http://www.torry.net/pages.php?id=567

nahpets 19. Feb 2009 08:24

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Hallo,

schreib mal bitte ein bisserl mehr, was Du vorhast.

Soll die Datenbank anhand der CSV-Dateien aktualisiert werden oder sollen die CSV-Dateien anhand der Datenbank aktualisiert werden oder soll ein gegenseitige Abgleich erfolgen?
Wieviele CSV-Dateien werden für eine Aktualisierung benötigt, wie oft und welche Datenmengen?
Wie ist der Aufbau der CSV-Dateien.

Z.B. Alles in doppelten Hochkommata getrennt durch Semikolon.
Zeichenfolgen in doppelten Hochkommata, nummerische Werte ohne Hochkommata.
Feste Länge für alle Spalten...

Wenn die CSV-Dateien nicht zu groß sind, könntest Du sie in eine Stringliste einlesen.
Nun gehst Du her und liest diese Stringliste zeilenweise in eine zweite Stringliste ein, bei der Du Delimiter auf Dein Trennzeichen setzt und DelimitedText den Inhalt einer Zeile zuweist. Nun hast Du in jeder Zeile die einzelnen Werte und kannst sie Deiner Datenbankkomponente zuweisen.

Das Ganze könnte (ungetestet) z. B. so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
  slCSV  : TStringList;
  slZeile : TStringList;
  i      : Integer;
begin
  slCSV  := TStringList.Create;
  slZeile := TStringList.Create;
  slCSV.LoadFromFile('Dateiname');
  for i := 0 to slCSV.Count - 1 do Begin
    slZeile.Delimiter    := ';';
    slZeile.DelimitedText := slCSV[i];
    if table.Locate('Schluesselspalte',slZeile[0]) then begin
      table.Edit;
    end else begin
      table.Append;
      table.FieldByName('Schluesselspalte').AsString := slZeile[0];
    end;
    table.FieldByName('Name').AsString   := slZeile[1];
    table.FieldByName('VorName').AsString := slZeile[2];
    table.FieldByName('Strasse').AsString := slZeile[3];
    // ...
    table.Post;
  end;
  slZeile.Free;
  slCSV.Free;
end;

Grolle 19. Feb 2009 08:38

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Hallo,

ich bekomme von meinem PDA eine csv Datei mit allen Kontakten. In welcher Form, kann ich selber bestimmen. Im Moment einfach durch Semikolon getrennt ohne Hochkommas. Wie viele Datensätze das werden können? - Keine Ahnung, wie viele Kontaktdatensätze passen denn auf einen PDA? Ich tippe mal es werden selten mehr als 1000 sein.

Viele Grüße ....

//Edit: Sync in beide Richtungen. Geänderte Datensätze fürs Gerät sollen wieder in einer CSV-Datei landen

nahpets 19. Feb 2009 08:53

Re: Effiziente Synchronisation Datenbank CSV-Datei
 
Hallo,

dann sollte das mit den Stringlisten ausreichend sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz