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;