Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Firebird-DB -> Tabellen nach CSV exportieren (https://www.delphipraxis.net/175853-firebird-db-tabellen-nach-csv-exportieren.html)

bernau 24. Jul 2013 10:06

Datenbank: firebird • Version: alle • Zugriff über: egal

Firebird-DB -> Tabellen nach CSV exportieren
 
Ich suche ein Tool, mit dem ich alle Tabellen einer DB in einem Rutsch in CSV-Daten exportieren kann. Jede Tabelle soll in eine eigene CSV-Datei exportiert werden. Soll ohne viel Aufwand geschehen. Ich möchte also nicht jede Tabelle einzeln per Hand exportieren, sondern alle auf einmal. Habe mir gedacht, bevor ich es selber schreibe, frage ich mal nach. ;-)

DeddyH 24. Jul 2013 10:59

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
http://www.delphipraxis.net/103662-e...csv-datei.html

bernau 24. Jul 2013 13:01

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Danke. Schade, ich dachte es gibt schon etwas fertiges.

Aber OK. So viel Arbeit ist es nicht das selber zu schreiben.

Hansa 24. Jul 2013 15:09

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Zitat:

Zitat von bernau (Beitrag 1222492)
ich dachte es gibt schon etwas fertiges.

Was ist schon fertig ? :lol: Prinzipiell brauchst Du doch nur über die einzelnen Tabellen zu wandern. Das geht so : Dataset anlegen und auf die Systemtabelle der Table-Names zugreifen. Also z.B.:

Delphi-Quellcode:
  while not DbDS.Eof do begin
    TableName := DbDS.FieldByName ('RDB$RELATION_NAME').AsString;
// hier Daten den Tablename an weiteres Dataset zuweisen und Daten exportieren
    DetailDS.Close;
    DetailDS.SelectSQL.Text := 'select count (*) AS ANZAHL from ' + TableName;
    DetailDS.Open;
    Anzahl := DetailDS.FieldByName ('ANZAHL').AsString;
    DbDS.Next;
  end;
Müsste doch eigentlich so gehen. :gruebel:

IBExpert 24. Jul 2013 16:24

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
solltest du ein IBExpert als Vollversion haben, dann geht das mit folgendem Code
im SQL Editor (D:\t\ ist hier nur standardpfad, den am besten anpassen).

Code:
execute ibeblock
as
begin
    for
    select trim(rdb$relations.rdb$relation_name)
    from rdb$relations
    where rdb$relations.rdb$relation_name not containing '$'
    into :tn
    do
    begin
      script='execute ibeblock
              as
              begin
                select * from '||:tn||' order by id as dataset MyDataset;
                ibec_ds_Export(MyDataset,__etCSV,''D:\t\'||:tn||'.csv'',''QuoteChar'');
                close dataset MyDataset;
              end';
      ibec_ExecSQLScript(ibec_GetDefaultConnection, script,'',nil);
    end
end
liesse sich mit ibescript.exe auch per Kommandozeile machen

Wichtig: Blobs lässt der weg, die machen im csv aber auch keinen sinn

bernau 24. Jul 2013 16:31

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Zitat:

Zitat von Hansa (Beitrag 1222530)
Zitat:

Zitat von bernau (Beitrag 1222492)
ich dachte es gibt schon etwas fertiges.

Was ist schon fertig ? :lol:

Ja, ja. Aber wozu sind wir Programmierer. Machen wir es halt eben selber. So viel Arbeit ist es wirklich nicht.

Perlsau 25. Jul 2013 01:36

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Zitat:

Zitat von Hansa (Beitrag 1222530)
Zitat:

Zitat von bernau (Beitrag 1222492)
ich dachte es gibt schon etwas fertiges.

Was ist schon fertig ? :lol: Prinzipiell brauchst Du doch nur über die einzelnen Tabellen zu wandern. Das geht so : Dataset anlegen und auf die Systemtabelle der Table-Names zugreifen. Also z.B.:
Müsste doch eigentlich so gehen. :gruebel:

Geht noch einfacher: Meiner Erfahrung nach verfügen alle DB-Connect-Komponenten über die Methode GetTableNames, die gewöhnlich eine Stringliste als Parameter erwarten und ein Boolean, der angibt, ob auch Systemtabellen übergeben werden sollen. Das ist dann mit einer Zeile Code erledigt:
Delphi-Quellcode:
IbConMain.GetTableNames(ListBox1.Items,False,False); // für IbDac von DevArt
FIBCon.GetTableNames(ListBox1.Items,False); // für FibPlus von Devrace
DatMod.ZeosCon.GetTableNames('',ListBox1.Items); // für Zeos
// usw.

Hansa 25. Jul 2013 01:44

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
das CONTAINING $ muss noch erwähnt werden. Da muss man aufpasen. Würde mal sagen, dass wäre wichtig, damit die Systemtabellen ausgeblendet werden. 8-)

Perlsau 25. Jul 2013 01:47

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Zitat:

Zitat von Hansa (Beitrag 1222579)
das CONTAINING $ muss noch erwähnt werden. Da muss man aufpasen. Würde mal sagen, dass wäre wichtig, damit die Systemtabellen ausgeblendet werden. 8-)

Du meinst vermutlich bei der Zeos-Komponente? Meistens wird ja ein Boolean verwendet, um die Systemtabellen auszublenden, bei Zeos wird ein String-Pattern verlangt à la LIKE, wie ich gerade anderswo gelesen hatte. Wie man bei Zeos die Systemtabellen ausblendet, ist mir derzeit nicht bekannt.

Hansa 25. Jul 2013 01:53

AW: Firebird-DB -> Tabellen nach CSV exportieren
 
Ne, Zeos ist irrelevant, das $ dreht sich um RDB$.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:47 Uhr.
Seite 1 von 2  1 2      

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