IBExpert Kommandozeilentools

<< ODBC Viewer | IBExpert | IBExpert Menü Systemdienste >>

Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation


IBExpert Kommandozeilentools

IBEExtract und IBECompare wurden in 2005 durch IBEScript.exe und EXECUTE IBEBLOCK ersetzt.

Für diejenigen, die mit älteren IBExpert Versionen arbeiten, stehen folgende Kommandozeilentools zur Verfügung:

Diese Tools bieten fast alle Optionen, die in den InterBase® and Firebird command-line utilities angeboten werden, und vieles mehr.

Um eins oder mehrere IBExpert Tools (ibexpert.exe, ibescript.exe, ibescript.dll, ibeextract.exe and ibecompare.exe) zusammen mit Ihrer Software weitergeben zu können, benötigen Sie:

Einige der Funktionen der neuen IBExpert Module laufen nicht auf nicht-registrierten Computern, so dass sie nur dort eingesetzt werden können, wo auch eine gültige IBExpert Softwareaktivierung installiert ist.

IBEScript

IBEScript.exe befindet sich im IBExpert Hauptverzeichnis und muss von der DOS-Ebene gestartet werden. (Dieses Feature ist leider nicht in der kostenlose IBExpert Personal Edition enthalten.)

Syntax

 IBEScript script_filename [options]
  • -S = stiller Modus.
  • -V<Verbose_file> = detaillierte Ausgabedatei. Wenn <Verbose_file> bereits existiert, wird IBEScript sie überschreiben.
  • -v<verbose_file> = detaillierte Ausgabedatei. Wenn <verbose_file> bereits existiert, wird IBEScript die Nachricht in diese Datei hinzufügen.
  • -E = nur Fehlermeldungen anzeigen.
  • -N = nach einem Fehler weiter ausführen.
  • -A<seconds> = Erweiterte Fortschritt (diese Option wurde in IBExpert Version 2016.03.15 hinzugefügt): <seconds> spezifiziert das Zeitintervall in Sekunden, um Fortschrittnachrichten anzuzeigen. Wenn <seconds> nicht spezifiziert ist, werden die Erweiterte Fortschritt-Informationen jede Sekunde angezeigt. Folgende Informationen stehen zur Vefügung:
    • SC - (statements count): Anzahl der ausgeführten Anweisungen;
    • POC - (percentage of completion): Fertigstellungsgrad;
    • TS - (time spent): Zeitaufwand;
    • ETL - (estimated time left): geschätzte Restzeit.
Bei INPUT-Skripten wird auch der Inputskript-Dateiname angezeigt. Erweiterte Fortschritt-Information wird auch bei Angabe der -S-Option (silent mode) angezeigt.
  • -T = Timestamp in die Logdatei schreiben.
  • -D = Verbindungsstring (verwenden Sie diesen Parameter, wenn Ihr Skript weder eine CONNECT- noch eine CREATE DATABASE-Anweisung enthält).
  • -P = Verbindungspasswort (nur mit der -D-Option verwenden).
  • -R = Verbindungs-Role (nur mit der -D-Option verwenden).
  • -U = Verbindungs-Username (nur mit der -D-Option verwenden).
  • -C = Zeichensatz (nur mit der -D-Option verwenden).
  • -l = Clientbibliothek-Datei (gds32.dll wenn nicht angegeben).
  • -L<1|2|3> = SQL Dialect (nur mit der -D-Option verwenden; 1 wenn nicht angegeben).
  • -i = Leerlauf Priorität.
  • -G<variable_name>=<value> = Globale Variablewerten spezifizieren.
  • -I<file_path_and_name> = Als Standard (wenn ohne die -I-Option spezifiziert) verarbeitet IBEScript.exe die IBEScript.ini-Dateien in der folgenden Reihenfolge sofort nach dem Start:
1. IBEScript.ini in das IBEScript.exe-Verzeichnis, wenn vorhanden,
2. IBEScript.ini in das aktuelle Verzeichnis, wenn vorhanden. Wenn nur -I ohne einen Dateinamen spezifiziert wird, werden alle INI-Dateien ignoriert. Wenn ein Dateiname nach -I spezifiert wird (z.B. -I"C:\Meine Dateien\myibescript.ini") wird NUR diese Datei, falls vorhanden, verarbeitet. Parameter, die auf der Kommandozeile angegeben werden, überschreiben die entsprechenden Parameter in einer INI-Datei.

ACHTUNG! Beachten Sie das Groß-/Kleinschreiben bei der Eingabe der Parameter!

Folgende Feature stehen auch zur Verfügung: Wenn kein Passwort und/oder Username in den CONNECT- oder CREATE DATABASE-Anweisungen angegeben wird, erscheint einen Login-Dialog. Es ist jetzt auch möglich die Verbindungszeichensatz (SET NAMES) und die Garbage Collection-Option (SET GARBAGE_COLLECT) vor der RECONNECT-Anweisung zu ändern. Alle angegebenen SET-Befehle, die von einer RECONNECT-Anweisung gefolgt werden, betreffen der neuen Verbindung.

Sie können auch Umgebungsvariablen in INPUT, OUTPUT und SET BLOBFILE Anweisungen verwenden (sehen Sie das Beispiel unten).

IBExpert Version 2014.01.01 führte die Unterstützung von Firebird 3.0 Packages ein, und nun wird UTF8 BOM bei der Skriptausführung aus einer Datei übersprungen. Und seit IBExpert Version 2014.03.16 unterstützt der OUTPUT-Befehl nun die OctetsAsHex-Option, welche die Extrahierung von CHAR(n) CHARACTER SET OCTETS-Werten in hexadezimalem Format ermöglicht.

zurück zum Seitenanfang

IBEScript Beispiele

1. IBEBlocktechnologie verwenden, um eine Prozedur mit Datenzugang in verschiedenen Firebird/InterBase®-Datenbanken zu erzeugen

Mit einem einfachen Skript, Daten von einer Firebird/InterBase® Datenbank in eine andere kopieren:

 execute ibeblock
 as
 begin
   FBSrc  = ibec_CreateConnection(__ctFirebird,'DBName="localhost:C:\DB1.FDB";
   ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll;
   user=SYSDBA; password=masterkey; names=WIN1252; sqldialect=3');
   FBDest = ibec_CreateConnection(__ctFirebird,'DBName="localhost:C:\DB2.FDB";
   ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll;
   user=SYSDBA; password=masterkey; names=WIN1252; sqldialect=3');
   ibec_UseConnection(FbSrc);
   for select CustNo, Company, Addr1 from customer order by company into :CustNo, :Company,
     :Addr1
   do
   begin
      use FBDest;
      INSERT INTO CUSTOMER (CustNo, Company, Addr1) VALUES (:CustNo, :Company, :Addr1);
      use FBSrc;
   end
   use FBDest;
   COMMIT;
   ibec_CloseConnection(FBSrc);
   ibec_CloseConnection(FBDest);
 end

zurück zum Seitenanfang

2. ODBC-Zugang zu allen ODBC-Datenquellen für Datenimport oder -export von einem Skript

Das Gleiche kann mit allen ODBC-Daten als Quelle und/oder Ziel durchgeführt werden (dieses Feature wurde mit IBM DB2®, Oracle®, MS Access®, Sybase® usw. getestet):

 execute ibeblock
 as
 begin
   OdbcCon = ibec_CreateConnection(__ctODBC, 'DBQ=C:\demo.mdb; DRIVER=Microsoft Access
   Driver (*.mdb)');
   FBCon = ibec_CreateConnection(__ctFirebird,'DBName="AVX-MAIN:D:\FB2_DATA\IBEHELP.FBA";
   ClientLib=C:\Program Files\Firebird\Bin\fbclient.dll;
   user=SYSDBA; password=masterkey; names=WIN1251; sqldialect=3');
   ibec_UseConnection(OdbcCon);
   for select CustNo, Company, Addr1 from customer order by company into :CustNo, :Company,
   :Addr1
   do
   begin
      use FBCon;
   INSERT INTO CUSTOMER (CustNo, Company, Addr1) VALUES (:CustNo, :Company, :Addr1);
      use OdbcCon
   end
   use FBCon;
   COMMIT;
   ibec_CloseConnection(OdbcCon);
   ibec_CloseConnection(FBCon);
 end

zurück zum Seitenanfang

3. Datenbanken mit Skripten vergleichen

Folgender Skript vergleicht die Struktur zweier Firebird/InterBase®-Datenbanken und speichert einen Skript, der verwendet werden kann, die Datenbankstruktur in der Zieldatenbank zu synchronisieren. Speichern Sie den folgenden Text als c:\comp.sql:

 execute ibeblock
 as
 begin
   create connection ReferenceDB dbname 'localhost:c:\RefDB.fdb'
   password 'masterkey' user 'SYSDBA'
   clientlib 'C:\Program Files\Firebird\bin\fbclient.dll'; 

   create connection CustomerDB dbname 'localhost:c:\customerDB.fdb'
   password 'masterkey' user 'SYSDBA'
   clientlib 'C:\Program Files\Firebird\bin\fbclient.dll';

   cbb = 'execute ibeblock (LogMessage variant)
          as
          begin
            ibec_progress(LogMessage);
          end';

   ibec_CompareMetadata(ReferenceDB, CustomerDB, 'C:\CompRes.sql', 'OmitDescriptions; OmitGrants', cbb);

   close connection ReferenceDB;
   close connection CustomerDB;
 end

Nun führen Sie folgende Kommandozeile aus, um den Skript zu erzeugen und die Datenbanken zu synchronisieren:

 ibescript.exe c:\comp.sql
 ibescript.exe c:\compres.sql

zurück zum Seitenanfang

4. Automatisch Berichte erzeugen

ibec_CreateReport bereitet einen Bericht aus einer spezifizierten Quelle vor, und gibt die vorbereiteten Berichtdaten zurück. Um den Bericht vorzubereiten, sehen Sie bitte im Kapitel, Report Manager, nach.

Dieses Feature kann für die Ausführung von mit dem IBExpert Report Manager erstellten Berichten auf Kommandozeilenebene, zum Beispiel mit Batch-Dateien, verwendet werden. Der monatliche Umsatzbericht, eine Rechnungsübersicht und ähnliches können im Report Manager erstellt und dann mit einfachen SQL-Anweisungen ausgeführt werden. Das Ergebnis kann dann in der Datenbank als eine PDF-Datei oder ein ähnliches Format gespeichert werden und per E-Mail verteilt oder mit ibec_ExportReport exportiert werden.

 execute ibeblock
  as
  begin
    Params['HeaderMemo'] = '';
    Params['MEMO2'] = 2;

    SELECT IBE$REPORT_SOURCE FROM ibe$reports
    where ibe$report_id = 4
    into :RepSrc;

    Report = ibec_CreateReport(RepSrc, Params, null);
    ibec_SaveToFile('D:\reptest.fp3', Report, 0);
            Res = ibec_ExportReport(Report, 'D:\reptest.pdf', __erPDF, 'EmbeddedFonts=TRUE');
    Res = ibec_ExportReport(Report, 'D:\reptest.jpg', __erJPEG, 'CropImages; Quality=90');
 end

zurück zum Seitenanfang

5. Dateiimport von SQL-Skripten in Blobfelder

Folgender Skript importiert Daten in die TEST-Tabelle:

 SET BLOBFILE 'C:\f1.jpg';
 INSERT INTO TEST(ID,BLOBCOL) VALUES (1, :h00000000_7FFFFFFF);
 SET BLOBFILE 'C:\f2.jpg';
 INSERT INTO TEST(ID,BLOBCOL) VALUES (2, :h00000000_7FFFFFFF);
 SET BLOBFILE 'C:\f3.jpg';
 INSERT INTO TEST(ID,BLOBCOL) VALUES (3, :h00000000_7FFFFFFF);

Der gleiche Syntax kann für das Updaten von Blobdaten verwendet werden.

6. Umgebungsvariablen in INPUT, OUTPUT und SET BLOBFILE Anweisungen verwenden

 execute ibeblock 
 as
 begin
 ibec_SetEnvironmentVariable('MyScriptDir', 'D:\Scripts\MyScripts');
 ibec_SetEnvironmentVariable('MyDataDir', 'D:\Data');
 ibec_SetEnvironmentVariable('MyBlobData', 'D:\Data\Blobs');
 end;

 SET BLOBFILE '\mytable.lob';

 OUTPUT '\mytable.sql';
 select * from mytable
 asinsert;
 COMMIT;

 INPUT '\ProcessData.sql';

Diese Beispiele zeigen nur einige der vielen Aufgaben, die Sie mit IBEScript erledigen können. Der vollständige Syntax und eine Parameterliste für ibec_CompareMetadata kann, zusammen mit einer ausführliche Liste aller IBEBlock-Befehle, in der englischsprachigen Onlinedokumentation nachgelesen werden.

zurück zum Seitenanfang

Verschlüsselung & Entschlüsselung

Es gibt zwei Möglichkeiten Skripte zu verschlüsseln/entschlüsseln und verschlüsselte Skripte auszuführen:

  1. Verschlüsselung ohne Passwort. In diesem Fall gibt es keine Möglichkeit den verschlüsselten Skript zu entschlüsseln, aber es ist möglich den Skript mit IBEScript auszuführen.
  2. Verschlüsselung mit Passwort. In diesem Fall ist es möglich den Skript zu entschlüsseln und mit IBExpert auszuführen, wenn das richtige Passwort eingegeben wird.

Folgende Optionen kontrollieren die Verschlüsselung und Entschlüsselung:

  • -e = verschlüsselt eine Skriptdatei und erzeugt eine Datei mit der .esql-Endung, wenn die Ausgabedatei nicht spezifiziert ist (wird nicht ausgeführt).
  • -d = entschlüsselt eine verschlüsselte Skriptdatei, falls es mit einem Passwort verschlüsselt wurde (wird nicht ausgeführt).
  • -p<password> = Verschlüsselt/entschlüsselt ein Passwort.
  • -o<file_name> = Ausgabedateiname für verschlüsselte und entschlüsselte Skripte.

Nochmal: achten Sie bitte bei der Parametereingabe auf Groß-/Kleinschreibung!

Beispiel 1

 IBEScript "C:\MeineSkripte\CreateDB.sql"

Beispiel 2

 IBEScript C:\MeineSkripte\CreateDB.sql -S -UScriptLog.txt

Dieses Produkt kann als ein Komponent der oben aufgeführten Distributionssoftware erworben werden.

Siehe auch:
deutschsprachig:
Skriptausführung
englischsprachig:
IBEBlock

zurück zum Seitenanfang

IBEScript.dll

IBEScript.dll kann in Applikationen verwendet werden, um Skripte von Dateien oder einem Stringzwischenspeicher auszuführen. Im /IBEScriptDll-Verzeichnis befindet sich eine kleine Demoanwendung. Bitte sehen Sie auch IBEScriptDll Readme.txt.

Information über die Registrierung aller IBExpert Module (ibexpert.exe, ibescript.exe, ibescript.dll, ibeextract.exe und ibecompare.exe) finden Sie am Anfang dieses Kapitels.

zurück zum Seitenanfang

IBEScriptDll Readme.txt

1. IBEScript.dll exportiert folgende Funktionen:

  • ExecScriptFile: führt einen Skript von einer Datei aus.
  • ExecScriptText: führt einen Skript von der Zwischenablage aus.
  • CONNECT: verbindet mit der Datenbank, wenn keine CONNECT-Anweisung im Skript angegeben ist.

2. Beispiele der Verwendung von ExecScriptFile und ExecScriptText: sehen Sie die Demoanwendung im /IBEScriptDll-Verzeichnis.

3. Beispiel mit der CONNECT-Funktion:

 procedure TForm1.Button2Click(Sender: TObject);
 var
   Hndl : THandle;
   ESP : TExecuteScriptProc;
   CP : TConnectDBProc;
   s : string;
   Res : integer;
 begin
   ErrCount := 0;
   StmtCount := 0;
   mLog.Lines.Clear;
   s := mScript.Text;
   if Trim(s) = '' then
   begin
     ShowMessage('Nothing to do!');
     Exit;
   end;
   try
     Hndl := LoadLibrary(PChar('IBEScript.dll'));
     if (Hndl > HINSTANCE_ERROR) then
     begin
       ESP := GetProcAddress(Hndl, 'ExecScriptText');
       CP := GetProcAddress(Hndl, 'Connect');
       if (@ESP <> nil) and (@CP <> nil) then
       begin
         Pages.ActivePage := tsOutput;
         Res := CP(PChar('db_name=localhost:c:\empty.fdb; password=masterkey; user_name=SYSDBA;'
 +
                         'lc_ctype=win1251; sql_role_name=ADMIN; sql_dialect=3;' +
                         'clientlib="c:\program files\firebird\bin\fbclient.dll"'), @CEH);
         if Res = 0 then
           ESP(PChar(s), @HandleError, @BeforeExec, @AfterExec);
         end;
       end;
   finally
     if Hndl > HINSTANCE_ERROR then
       FreeLibrary(Hndl);
   end;
 end;

Dieses Produkt kann als ein Komponent der oben aufgeführten Distributionssoftware erworben werden.

zurück zum Seitenanfang

IBECompare

IBECompare wurde in 2005 durch IBEScript.exe and EXECUTE IBEBLOCK ersetzt.

Für diejenige, die immer noch mit älteren IBExpert Versionen arbeiten: IBECompare ist ein Kommandozeilenwerkzeug, womit man Datenbanken, Skripte und Tabellendaten vergleichen kann. Es wurde ursprünglich in 2004 eingeführt.

IBECompare.exe befindet sich im IBExpert Hauptverzeichnis und wird von der DOS-Ebene gestartet:

 C:\Program Files\HK-Software\IBExpert 2004>ibecompare

IBECompare bietet folgende Optionen:

  • -C<config_file> = Konfigurationsdatei.
  • -O<output_file> = Ausgabedatei (Result.sql wenn nicht benutzerspezifiziert).
  • -V<verbose_file> = ausführliche Datei.
  • -D = Datenbank Metadaten und Skripte vergleichen.
  • -T = Tabellendaten vergleichen.
  • -S = Stiller Modus.
  • -s = Ein Konfigurationsdatei-Beispiel erstellen (config_sample.ini).

ACHTUNG! Beachten Sie das Groß-/Kleinschreiben bei der Eingabe der Parameter!

Beispiel

 IBECompare -D -Cconfig.ini -OC:\Scripts\result.sql -Vlog.txt

In beiden Fällen (d.h. Optionen -D oder -T) produziert IBECompare eine SQL Skriptdatei. Eine Eingabeparameterdatei muss mit der -C Parameter angegeben werden.

Sie können die Vorlage dieser Datei erhalten, wenn Sie IBECompare mit der -s Option (IBECompare -s) starten. In diesem Fall erzeugt IBECompare eine config_sample.ini-Datei im aktuellen Verzeichnis, die Sie schnell und einfach modifizieren können.

Es ist auch möglich eine Einstellungsparameterdatei mit der Save configuration-Button im IBExpert Nützliches Menü, Datenbankstrukturvergleich, zu erzeugen

Folgendes Beispiel zeigt eine .ini-Datei für den Vergleich von Tabellendaten:

 [MasterDB]
 ConnectString=LOCALHOST:C:\MyData\Master.gdb
 Username=SYSDBA
 Password=masterkey
 Charset=WIN_1251
 ClientLib=gds32.dll
 ; Next item will be used while comparing tables
 TableName=CUSTOMER

 ; Instead of MasterDB section you can use MasterScript section:
 ;[MasterScript]
 ; ScriptFile=D:\MyScripts\MyData.dql

 [TargetDB]
 ConnectString=MYSERVER:D:\Data\customer.gdb
 Username=SYSDBA
 Password=masterkey
 Charset=WIN_1251
 ClientLib=gds32.dll
 ; Next item will be used while comparing tables
 TableName="Customer" 

 ; Instead of TargetDB section you can use TargetScript section:
 ;[TargetScript]
 ;ScriptFile=D:\MyScripts\MyData.dql

 [CompareObjects]
 Domains=1
 Tables=1
 Views=1
 Triggers=1
 Procedures=1
 Generators=1
 Exceptions=1
 Functions=1
 Roles=1
 Indices=1
 Grants=1
 Descriptions=1
 PrimaryKeys=1
 ForeignKeys=1
 Uniques=1
 Checks=1

 [Options]
 ; Next items will be used while comparing tables
 ProcessINSERTs=1
 ProcessUPDATEs=1
 ProcessDELETEs=1

Sollte der mit IBECompare generierte Skript auch einen

 SET BLOBFILE 'xxx.lob';

Befehl enthalten, ist es notwendig den Skript mit IBEScript oder mit der IBExpert Skriptausführung auszuführen.

SET BLOBFILE ist eine besondere Skriptsprachen-Erweiterung, die das Einfügen und Updaten von Blobwerten mit einem Skript ermöglicht.

Siehe auch:
deutschsprachig:
Skriptausführung
Datenbankstrukturvergleich
Tabellendatenvergleich

zurück zum Seitenanfang

IBEExtract

IBExtract wurde in 2005 durch IBEScript.exe and EXECUTE IBEBLOCK ersetzt. Weitere Information finden Sie unter ibec_ExtractMetadata.

Für diejenige, die immer noch mit älteren IBExpert Versionen arbeiten, befindet sich IBEExtract.exe im IBExpert Hauptverzeichnis, und kann von der DOS-Ebene gestartet werden.

Syntax

 IBEExtract Datenbank [Optionen]
  • -U<user_name> = Username (SYSDBA wenn nicht angegeben).
  • -P<password> = Passwort (masterkey wenn nicht angegeben).
  • -C<character_set> = Zeichensatz.
  • -O<output_file> = Ausgabedatei (Result.sql wenn nicht angegeben).
  • -F<output_folder> = Ausgabeverzeichnis (für den Separate Files Modus; aktuelles Verzeichnis, wenn nicht angegeben).
  • -G = Generatoren-Werte setzen.
  • -D = Daten extrahieren.
  • -B = Blobs extrahieren (bitte sehen Sie Blobfelder für aktuelle Information über Blobs).
  • -S = Stiller Modus.
  • -V<verbose_file> = ausführliche Datei.
  • -M<config_file> = Konfigurationsdatei verwenden.
  • -T = CREATE DATABASE Anweisung generieren.
  • -N = CONNECT Anweisung generieren.
  • -W = Passwort in der CREATE DATABASE- oder der CONNECT-Anweisung berücksichtigen.
  • -R = Objektbeschreibungen extrahieren.
  • -A<integer_value> = Nach <integer_value> Datensätzen committen.
  • -Y = Berechnete Felder separat extrahieren.
  • -X = Privilegien extrahieren.
  • -L = Privilegien nur für ausgewählte Objekte extrahieren.
  • -d = Datumformat (native Firebird/InterBase® Datumformat <DD-MMM-YYYY>, wenn nicht angegeben).
  • -f = In getrennte Dateien extrahieren.
  • -s = In getrennte Dateien extrahieren.
  • -r = REINSERT statt wiederholte INSERTs verwenden.
  • -l = Klientbibliothekdatei (gds32.dll, wenn nicht angegeben).
  • -z = Maximale Große der resultierenden Dateien in MB.
  • -u = UPDATE statt DESCRIBE-Option verwenden.

ACHTUNG! Beachten Sie das Groß-/Kleinschreiben bei der Eingabe der Parameter!

Beispiel 1

 IBEExtract localhost:c:\MeineDaten\MeinDatenbank.gdb -OC:\Skripte\result.sql -USYSDBA -Pmasterkey -CWIN1251

Beispiel 2

 IBEExtract "C:\IB Data\my.gdb" -O"My Script.sql" -V"Extract Log.txt"

Alle hier aufgeführte Optionen befinden sich auch in IBExpert unter Nützliches / Extrahiere Metadaten.

Siehe auch:
deutschsprachig:
Extrahiere Metadaten
englischsprachig:
ibec_ExtractMetadata
Using Extract metadata to repair databases

zurück zum Seitenanfang
<< ODBC Viewer | IBExpert | IBExpert Menü Systemdienste >>