AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paradox nach MSSQL

Ein Thema von egentur · begonnen am 6. Dez 2018 · letzter Beitrag vom 14. Dez 2018
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.629 Beiträge
 
Delphi 12 Athens
 
#15

AW: Paradox nach MSSQL

  Alt 7. Dez 2018, 22:39
Hier eine kleine Routine, die ein DataSet in eine BCP-Importdatei schreibt. Die Felder der Quell- und Zieltabelle müssen dabei in Reihenfolge und Typ übereinstimmen (Namen sind egal).
Delphi-Quellcode:
procedure ExportDataSetToBCP(DataSet: TDataSet; const FileName: string);

  function GetBytesText(const ABytes: TBytes): string;
  var
    B: Byte;
  begin
    Result := '';
    for B in ABytes do
      Result := Result + IntToHex(B, 2);
  end;

var
  fld: TField;
  S: string;
  sep: string;
  writer: TStreamWriter;
begin
  writer := TStreamWriter.Create(FileName, False, TEncoding.ANSI);
  try
    DataSet.Active := true;
    DataSet.First;
    while not DataSet.Eof do begin
      sep := '';
      for fld in DataSet.Fields do begin
        Writer.Write(sep);
        if not fld.IsNull then begin
          case fld.DataType of
            ftDate: S := FormatDateTime('yyyy-mm-dd', fld.AsDateTime);
            ftTime: S := FormatDateTime('hh:nn:ss', fld.AsDateTime);
            ftDateTime: S := FormatDateTime('yyyy-mm-dd hh:nn:ss', fld.AsDateTime);
            ftTimeStamp: S := FormatDateTime('yyyy-mm-dd hh:nn:ss.zzz', fld.AsDateTime);
            ftBlob: S := GetBytesText(fld.AsBytes);
          else
            S := fld.DisplayText;
          end;
          Writer.Write(S);
        end;
        sep := #9;
      end;
      Writer.WriteLine;
      DataSet.Next;
    end;
  finally
    writer.Free;
  end;
end;
Der passende BCP-Aufruf sehe dann folgendermaßen aus:
Code:
bcp <Database>.dbo.<Table> in "<ImportFile>" -b 10000 -c -C ACP -e "<ErrorFile>" -E -T -S <Server>
Die Platzhalter in spitzen Klammern müssen natürlich durch die tatsächlichen Werte ersetzt werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 22:31 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