SIARD Suite 2.2 - Befehlszeilenaufruf

Die Funktionen des Herunterladens und Hinaufladens der SIARD Suite können von der Befehlszeile aufgerufen werden:

Zum Seitenanfang

SiardFromDb

SiardFromDb ist ein Befehlszeilenprogramm welches eine Datenbank in ein SIARD-Archiv herunterlädt. Mit SiardFromDb kann man

  • ein SIARD-Archive (Metadaten und Primärdaten) aus einer Datenbank (Option -s), und/oder
  • eine SIARD Metadaten XML mit der Definition des Datenbankschemas (option -e).

erzeugen.

Zum Seitenanfang

Aufruf

java -cp <siardpath>/lib/siardcmd.jar ch.admin.bar.siard2.cmd.SiardFromDb [-h] |
[-o] [-v] [-l=<login timeout>] [-q=<query timeout>] [-i=<import meta data>] [-x=<external lob folder>] [-m=<mime type>]
-j=<JDBC URL> -u=<database user> -p=<database password> -s=<siard file> -e=<export meta data>"
                

Als <siardpath> ist der Ordner anzugeben, wo SIARD Suite installiert wurde. Die Datei siardcmd.jar befindet sich im Unterordner lib mit ihrer Klasse ch.admin.bar.siard2.cmd.SiardFromDb, deren main() mit java aufgerufen wird (unter Windows ist stattdessen javaw zu benutzen).

Die Aufrufsyntax wird angezeigt, wenn die Option -h (help) als Argument der Befehlszeile steht.

Zum Seitenanfang

Argumente

ArgumentBedeutung
-oÜberschreiben (overwrite) der Ausgabe Datei(en), wenn sie existieren
-vViews (Ansichten) als Tabellen archivieren
<login timeout>Timeout in Sekunden für die Anmeldung (login) (0 für unbeschränkt)
<query timeout>Timeout in Sekunden für die Abfrage (0 für unbeschränkt)
<import meta data>Name der Metadaten XML-Datei, die als Muster zu berücksichtigen ist
<external LOB folder>Ordner wo die Daten der grössten LOB (large object) Spalte der Datenbank extern zu speichern sind (gleichnamige Inhalte werden überschrieben!)
<mime type>MIME-Typ der Daten der grössten LOB-Spalte der Datenbank (beeinflusst die Wahl der Namenerweiterung der extern gespeicherten LOBs)
<JDBC URL>JDBC URL der Datenbank, die heruntergeladen werden soll
z.B.
für MS Access
jdbc:access:D:\Projekte\SIARD2\JdbcAccess\testfiles\testdb.mdb
für DB/2
jdbc:dbserver.enterag.ch:50000/testdb
für MySQL
jdbc:mysql://dbserver.enterag.ch:3306/testdb
für Oracle
jdbc:oracle:thin:@dbserver.enterag.ch:1521:orcl
für Postgres
jdbc:postgresql://dbserver.enterag.ch:5432/testdb
für SQL Server
jdbc:sqlserver://dbserver.enterag.ch\testdb:1433
<database user>Datenbank User
<database password>Datenbank Passwort
<siard file>Name der zu erzeugenden .siard Datei
<export meta data>Name der zu exportierenden .xml Metadaten-Datei

Zum Seitenanfang

Bemerkungen

Entweder die SIARD Datei oder die Exportdatei für Metadaten oder beide müssen gegeben sein.

Das Programm SiardFromDb sollte gegen einen Datenbank-Snapshot aufgerufen werden, der sich während des Archivierungsprozesses nicht ändert.

Die Option Views als Tabellen archivieren hat normalerweise redundante Speicherung derselben Daten zur Folge und ist deshalb nicht empfohlen. Sie ist dann nützlichm wenn der für das Archvieren genutzte Datenbank-User die Inhalte der Views (Ansichten) anzeigen kann, nicht aber die der Basistabellen.

Der Archivierungsprozess ist entweder gänzlich erfolgreich oder er scheitert gänzlich.

Für grosse Datenbanken wird empfohlen, zuerst die Metadaten-XML herunterzuladen. Diese enthält alle Metadaten und Tabellengrössen und hilft so der Abschätzung der für den Download benötigten Ausführungszeit. Ausserdem sollte man die Option -q 0 für grosse Tabellen verwenden, da es unmöglich ist, abzuschätzen, wie viele Sekunden eine Grössenabfrage dauern wird.

Die Konversion von TIMEs und TIMESTAMPs in der Datenbank hängt von der lokalen Zeitzone ab. Wenn die Zeit 15:30 in Zürich archiviert wird, wird die UTC-Zeit 14:30 im SIARD-Archiv gespeichert - im Winter. Um diese Konversion zu unterdrücken, muss SiardFromDb mit der Option

-Duser.timezone=GMT

gestartet werden, welche SIARD veranlasst, alle Datenbankzeiten als UTC-Zeiten zu interpretieren.

Zum Seitenanfang

Archivbenutzer

Es ist generell keine gute Idee, den Datenbankadministrator (DBA, root, dbo, ...) mit allen Rechten für das Herunterladen eines SIARD-Archivs zu benutzen. Der Umfang der im SIARD-Archiv gespeicherten Daten ist durch die Objekte definiert, auf welche der Archibbenutzer lesend zugreifen darf. Der globale DBA kann normalerweise alle Datenbanken auf dem System und ausserdem viele Systemtabellen lesen, die nicht zu archivieren sind. Deshalb ist es wichtig, einen passenden, allenfalls neu zu erzeugenden, Archivbenutzer für das Herunterladen zu benutzen.

Zum Seitenanfang

SiardToDb

SiardToDb ist ein Befehlszeilenprogramm welches ein SIARD-Archiv zu Recherchezwecken in eine Datenbank-Instanz lädt.

Zum Seitenanfang

Aufruf

java -cp <siardpath>/lib/siardcmd.jar ch.admin.bar.siard2.cmd.SiardToDb [-h]
[-o] [-l=<login timeout>] [-q=<query timeout>]
-s=<siard file> -j=<JDBC URL> -u=<database user> -p=<database password>
[<schema> <mappedschema>]*

Als <siardpath> ist der Ordner anzugeben, wo SIARD Suite installiert wurde. Die Datei siardcmd.jar befindet sich im Unterordner lib mit ihrer Klasse ch.admin.bar.siard2.cmd.SiardToDb, deren main() mit java aufgerufen wird (unter Windows ist stattdessen javaw zu benutzen).

Die Aufrufsyntax wird angezeigt, wenn die Option -h (help) als Argument der Befehlszeile steht.

Zum Seitenanfang

Argumente

ArgumentBedeutung
-oÜberschreiben (overwrite) von gleichnamigen Typen und/oder Tabellen in der Datenbank, sofern solche existieren
<login timeout>Timeout in Sekunden für die Anmeldung (login) (0 für unbeschränkt)
<query timeout>Timeout in Sekunden für eine Abfrage (query) (0 für unbeschränkt)
<siard file>Name der hochzuladenden .siard Datei
<JDBC URL>JDBC URL der Zieldatenbank
z.B.
für MS Access
jdbc:access:D:\Projekte\SIARD2\JdbcAccess\testfiles\testdb.mdb
für DB/2
jdbc:dbserver.enterag.ch:50000/testdb
für MySQL
jdbc:mysql://dbserver.enterag.ch:3306/testdb
für Oracle
jdbc:oracle:thin:@dbserver.enterag.ch:1521:orcl
für Postgres
jdbc:postgres://dbserver.enterag.ch:5432/testdb
für SQL Server
jdbc:sqlserver://dbserver.enterag.ch\testdb:1433
<database user>Datenbank User
<database password>Datenbank Passwort
<schema>Schemaname im SIARD-Archiv
<mappedschema>in der Datenbank zu benutzender Schemaname

Zum Seitenanfang

Bemerkungen

Da ältere Datenbanken nicht SQL:2008-konform sind, ist es unvermeidlich, dass etliche manuelle Vorbereitung für das Hochladen durchgeführt wird. Es gibt keine Schema-Objekte in MS Access. Benutzer und Schemas sind untrennbar in Oracle. Schemaobjekte und Datenbanken sind dasselbe in MySQL. Deshalb müssen alle Schemas vor dem Hochladen manuell erzeugt werden. Ausserdem muss der Datenbankbenutzer das Recht haben, Tabellen und Typen in diesen Schemas zu erzeugen. Da dies nicht immer einfach möglich ist, werden Datenbankschemas entsprechend der Abbildungsliste auf der Befehlszeile den Schemanamen zugeordnet.

Das Hochladen erzeugt nur Tabellen und Typen und versucht Eindeutigkeits- und Fremdschlüssel zu aktivieren. Keine anderen Objekte werden in der Zieldatenbank erzeugt. Falls die Schlüssel nicht aktiviert werden konnten, wird eine Warnung ausgegeben, das Hochladen aber trotzdem als erfolgreich abgeschlossen betrachtet. Auch ohne diese Schlüssel kann man SQL SELECT Abfragen der Datenbank ausführen.

Ausserdem werden beim Hinaufladen evtl. gewisse Abstriche gemacht. Bei MS Access landen alle Tabellen in derselben MDB/ACCDB. Bei Oracle werden alle Namen, die länger sind als 30 Zeichen gekürzt. Zur Vermeidung von Kollisionen werden Tabellen- und Spaltennamen um einen Zähler ergänzt. (So wird etwa aus der Tabelle „Ein viel zu langer Tabellenname für Oracle“ zum Beispiel „Ein viel zu langer Tabellen01“.)

Wo die maximale Präzision und die maximale Anzahl Dezimalstellen (etwa unter MS Access) kleiner ist als benötigt, werden die Werte mit geringerer Präzision hinaufgeladen. SIARD behilft sich so gut es eben im Zieldatenbanksystem möglich ist. Wenn man die Metadaten der Datenbank mittels SiardGui konsultiert, wird man die korrekten Bezeichnungen und Werte zuordnen können.

Die Konversion von TIMEs und TIMESTAMPs in der Datenbank hängt von der lokalen Zeitzone ab. Die UTC Zeit 14:30 im SIARD Archiv wird beim Hochladen in Zürich als lokale Zeit 15:30 in die Datenbank geladen – im Winter. Um diese Konversion zu unterdrücken, muss SiardToDb mit der Option

-Duser.timezone=GMT

gestartet werden, welche SIARD veranlasst, alle Datenbankzeiten als UTC-Zeiten zu interpretieren.