AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi CSV Datei in eine Tabelle auf SQL-Server laden
Thema durchsuchen
Ansicht
Themen-Optionen

CSV Datei in eine Tabelle auf SQL-Server laden

Ein Thema von AndreT · begonnen am 5. Nov 2004 · letzter Beitrag vom 16. Nov 2004
 
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: CSV Datei in eine Tabelle auf SQL-Server laden

  Alt 5. Nov 2004, 15:05
Zitat von AndreT:
Ich muss Datensätze aus einem CSV-File in eine SQL-Server-Tabelle laden. Die Anzahl der Datensäte beträgt min 600000 Stück.
Sie kommen gesplittet in mehreren Files an. Diese Files kopiere ich automatisch der Reihe nach in eine "temp.csv" um. Auf dieser Datei habe ich eine ODBC-Connection liegen.
Das würde ich nicht tun.
Durch die Treiberschicht von ODBC hast du schon einen grossen Performanceverlust.
Ich würde jede Datei direkt in eine TStringList einlesen und dann Zeile für Zeile in die Einzelfelder zerlegen.
Siehe Code-Library: http://www.delphipraxis.net/internal...ct.php?t=29791
Zitat von AndreT:
somit habe ich unter Dephi eine ADODataConnection1, ein AdoTable1, und eine DataSource1. und ich habe eine ADODataConnection2, ein AdoTable2, und eine DataSource2 die mir die Verbindung zur SQL-Server-Tabelle herstellt.
Ein ADOTable ist schlecht, da du ja nicht alle Datensätze vom Server abrufen, sondern nur einfügen willst.
Deshalb nimm eine ADOQuery mit den Eigenschaften:
Delphi-Quellcode:
CursorLocation := clUseClient;
SQL.Text := 'SELECT * FROM tabelle WHERE 0=1';
Hier noch ein Beispiel:
Delphi-Quellcode:
   liste := TStringList.Create;
   liste.LoadFromFile(fname);
   // leere Zeilen entfernen
   RemoveEmptyStrings(liste);

   ProgressBarImport.Max := liste.Count - 1;
   for n := 0 to liste.Count - 1 do
   begin
      ProgressBarImport.Position := n;
      Application.ProcessMessages;
      s := liste.Strings[n];

      ADOQuery1.Append;

      FBulkInsert.DataSet['KFZ'] := ExtractDelimited(1, s, delims);
      FBulkInsert.DataSet['PLZ'] := ExtractDelimited(2, s, delims);
      FBulkInsert.DataSet['EPL'] := ExtractDelimited(3, s, delims);
      FBulkInsert.DataSet['TOUR'] := ExtractDelimited(4, s, delims);
      FBulkInsert.DataSet['TIME_NORM'] := ExtractDelimited(5, s, delims);
      FBulkInsert.DataSet['TIME_FRUEH'] := ExtractDelimited(6, s, delims);
      ADOQuery1.Post;
   end;
Andreas
  Mit Zitat antworten Zitat
 


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 +1. Es ist jetzt 08:37 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