AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi CSV mit Zeilenumbrüchen imprortieren
Thema durchsuchen
Ansicht
Themen-Optionen

CSV mit Zeilenumbrüchen imprortieren

Ein Thema von Overburn · begonnen am 18. Jan 2008 · letzter Beitrag vom 18. Jan 2008
Antwort Antwort
Overburn

Registriert seit: 12. Okt 2004
Ort: Bochum
47 Beiträge
 
#1

CSV mit Zeilenumbrüchen imprortieren

  Alt 18. Jan 2008, 08:20
Datenbank: MSSQL • Version: 2005 • Zugriff über: lokal
Moin mitdelphianer,

ich bräuchte mal bitte eure Mithilfe bei einem Ansatz.
Ich hab die Aufgabe eine seeehr große CSV-Datei mittels Delphiprogramm in eine Datenbank zu importieren.
Soweit kein großes Ding.
Jetzt ist aber die Sache, dass es in der Urspurngsdatenbank (auf die ich NICHT zugreifen kann) Felder gab, in denen Zeilenumbrüche erlaubt waren. Das hat beim Export die ganze CSV-Datei kaputt gemacht. Soll heißen, immer wenn ein Zeilenumbruch in einem Feld stand, gab es einen Zeilenumbruch in der CSV. Ich müsste jetzt diese Zeilenumbrüche aus der Datei entfernen. Leider müssen die Umrbrüche erhalten bleiben. Meine Idee wäre die #13#10 durch #10 zu ersetzen.
Ich hab jetzut überlegt jede Zeile einzeln nach den Umbrüchen zu durchsuchen und diese zu ersetzen. Nur kann es da passieren, dass ich echten Ende der Zeile/des Datensatzes ankomme und auch diese Zeilenumbruch wegfiltere.

Was sagt ihr zu meinem Ansatz?

Gruß,
Stefan
  Mit Zitat antworten Zitat
shmia

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

Re: CSV mit Zeilenumbrüchen imprortieren

  Alt 18. Jan 2008, 08:42
* Daten auf eine TStringList einlesen
* Zeile für Zeile durchgehen und die Anzahl der Trennzeichen ( ; ) zählen
* sollte eine Zeile zu wenig Trennzeichen haben, die aktuelle mit der folgenden Zeile verschmelzen
* StringList speichern
Andreas
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#3

Re: CSV mit Zeilenumbrüchen imprortieren

  Alt 18. Jan 2008, 09:21
Hallo,

oft zeichnen sich CSV-Formate mit Zeilenumbrüchen in den Feldwerten dadurch aus, dass alle Feldwerte mit Begrenzungszeichen geschrieben werden. In diesen Fällen kann man die Prüfung noch vereinfachen:

Delphi-Quellcode:
var
  i: Integer;
  sLine, sBuffer: string;
  cQuote: Char;
begin
  AssignFile(input, '');
  Reset(input);
  AssignFile(output, '');
  Rewrite(output);
  sBuffer := '';
  cQuote := '"';
  while not Eof do
  begin
    ReadLn(sLine);
    sBuffer := sBuffer + sLine;
    if (RightStr(sBuffer, 1) = cQuote) and (RightStr(sBuffer, 2) <> cQuote + cQuote) then
    begin
      WriteLn(sBuffer);
      sBuffer := '';
    end;
  end;
  CloseFile(output);
  CloseFile(input);
end;
Getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat
Antwort Antwort


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 12:19 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