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:
- IBExpert Server Tools, eine "schlanke" VAR-Version für diejenige, die nicht alle IBExpert Kommandozeilentools weitergeben möchten.
- IBEScript.exe Distribution License?, wenn Sie nur die
IBEScript.exe
mit Ihren Kundenanwendungen verteilen möchten. - IBEScript.dll Distribution License?, wenn Sie nur die
IBEScript.dll
mit Ihren Kundenanwendungen verteilen möchten.
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, wirdIBEScript
sie überschreiben.-v<verbose_file>
= detaillierte Ausgabedatei. Wenn<verbose_file>
bereits existiert, wirdIBEScript
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.
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 eineCONNECT
- noch eineCREATE 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) verarbeitetIBEScript.exe
dieIBEScript.ini
-Dateien in der folgenden Reihenfolge sofort nach dem Start:
IBEScript.ini
in das IBEScript.exe
-Verzeichnis, wenn vorhanden,
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.
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
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
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
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
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.
Verschlüsselung & Entschlüsselung
Es gibt zwei Möglichkeiten Skripte zu verschlüsseln/entschlüsseln und verschlüsselte Skripte auszuführen:
- 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. - 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
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.
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 keineCONNECT
-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.
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
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 derCREATE DATABASE
- oder derCONNECT
-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 wiederholteINSERTs
verwenden.-l
= Klientbibliothekdatei (gds32.dll
, wenn nicht angegeben).-z
= Maximale Große der resultierenden Dateien in MB.-u
=UPDATE
stattDESCRIBE
-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 >>