Befehl wsschema
Das Schematool kann verwendet werden, um das Datenbankschema im XML-Format anzuzeigen oder ein XML-Schema mit einer vorhandenen Datenbank abzugleichen.
Das Tool wsschema kann das aktuelle Datenbankschema ausgeben, mit der Option, das Schema zur weiteren Bearbeitung in eine XML-Darstellung umzusetzen. Das Schematool kann bei einer XML-Schemadefinition die Differenzen zwischen dem XML-Schema und dem vorhandenen Datenbankschema berechnen und die notwendigen Änderungen vornehmen, damit die Datenbanken mit dem XML-Schema übereinstimmen. Das vom Schematool verwendete XML-Format berücksichtigt die Unterschiede in den SQL-Dialekten, die von verschiedenen Anbietern verwendet werden. Das Schematool passt seine SQL automatisch an fremde Abhängigkeiten an, daher ist es für die allgemeine Bearbeitung der Schemata nützlich.
Syntax
Die Befehlssyntax lautet wie folgt:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
wsschema.sh [Parameter][Argumente]
![[IBM i]](../images/iseries.gif)
wsschema [Parameter][Argumente]
![[Windows]](../images/windows.gif)
wsschema.bat [Parameter][Argumente]
Setzen Sie den Befehl über das Unterverzeichnis bin des Verzeichnisses Profilstammverzeichnis ab.
Parameter
- -ignoreErrors/-i <true/t | false/f>:
Ist dieser Parameter auf false gesetzt, wird eine Ausnahmebedingung ausgelöst,
wenn das Tool Datenbankfehler ermittelt.
Die Standardeinstellung ist false.
- -file/-f <stdout | Ausgabedatei>:
Mit dieser Option können Sie die geplanten Schemaänderungen in ein SQL-Script schreiben,
ohne sie in der Datenbank festschreiben zu müssen.
Wenn Sie diesen Parameter in Verbindung mit den Aktionen "export" und "reflect" einsetzen, wird die benannte Datei zum Schreiben der Schema-XML verwendet. Benennt die Datei eine Ressource im Klassenpfad, werden Daten in diese Ressource geschrieben. Verwenden Sie "stdout", um Daten in die Standardausgabe zu schreiben. Die Standardeinstellung ist stdout.
- -openjpatables/-ot <true/t | false/f>:
Beim Ausgeben des Schemas bestimmt dieser Parameter, ob Tabellen und Sequenzen,
deren Name mit OPENJPA_ beginnt, ausgegeben werden sollen.
Diese Tabellen und Sequenzen können von bestimmten OpenJPA-Komponenten, z. B. der Tabellenschemafactory, genutzt werden. Wenn Sie andere Aktionen ausführen, bestimmt der Parameter "openjpaTables", ob diese Tabellen gelöscht werden können. Die Standardeinstellung ist false.
- -dropTables/-dt <true/t | false/f>:
Wenn Sie diese Option auf true setzen, löscht das Schema Tabellen, die in
retain- und refresh-Aktionen nicht verwendet werden.
Der Standardwert ist true.
- -dropSequences/-dsq <true/t |
false/f>: Wenn Sie diese Option auf true setzen, löscht das Schema
Sequenzen, die in retain- und refresh-Aktionen nicht verwendet werden.
Der Standardwert ist true.
- -sequences/-sq <true/t | false/f>:
Dieses Flag bestimmt, ob Sequenzen bearbeitet werden können.
Der Standardwert ist true.
- -indexes/-ix <true/t | false/f>:
Dieses Flag bestimmt, ob Indizes in vorhandenen Tabellen bearbeitet werden können.
Der Standardwert ist true.
- -primaryKeys/-pk <true/t | false/f>:
Dieses Flag bestimmt, ob Primärschlüssel in vorhandenen Tabellen bearbeitet werden können.
Der Standardwert ist true.
- -foreignKeys/fk <true/t | false/f>:
Dieses Flag bestimmt, ob Fremdschlüssel in vorhandenen Tabellen bearbeitet werden können.
Der Standardwert ist true.
- -record/-r <true/t | false/f>:
Dieses Flag lässt zu bzw. verhindert, dass Schemaänderungen, die vom Schematool vorgenommen wurden,
in die aktuelle Schemafactory geschrieben werden.
Wählen Sie true aus, um das Schreiben der Schemaänderungen zuzulassen, oder wählen Sie "false" aus, um das Schreiben der Schemaänderungen zu verhindern. Die Standardeinstellung ist true.
- -schemas/-s <Schemaliste>:
Bezeichnet eine Liste von Schema- und Tabellennamen, auf die OpenJPA bei der Ausführung des Schematools zugreift.
Diese Einstellung ist äquivalent zu der Einstellung der Eigenschaft "openjpa.jdbc.Schemas", die eine einmalige Ausführung vorsieht.
Wichtig: Das Schematool akzeptiert das Flag -action/-a. Es können mehrere Aktionen, voneinander getrennt durch Kommata, in einer Liste angegeben werden. Folgende Aktionen sind möglich:- add: Das ist die Standardaktion, die verwendet wird, wenn keine anderen Aktionen angegeben sind. Sie aktualisiert das Schema mit den vorhandenen XML-Dokumenten, indem sie Tabellen, Spalten, Indizes oder andere Komponenten hinzufügt. Bei dieser Aktion werden nie Schemakomponenten gelöscht.
- retain: Mit dieser Aktion werden alle Schemakomponenten in der vorhandenen XML-Definition beibehalten, alle übrigen Elemente werden jedoch aus der Datenbank gelöscht. Bei dieser Aktion werden nie Schemakomponenten hinzugefügt.
- drop: Löscht alle Schemakomponenten in der Schema-XML. Diese Aktion löscht Tabellen nur, wenn sie nach dem Löschen aller in der XML aufgelisteten Spalten keine Spalten mehr enthalten.
- refresh: Diese Aktion entspricht den Aktionen retain und add.
- build: Generiert SQL, um ein Schema zu erstellen, das mit dem Schema in der angegebenen XML-Datei übereinstimmt. Im Gegensatz zur Aktion add berücksichtigt diese Option nicht die Tatsache, dass ein Teil des in der XML-Datei definierten Schemas bereits in der Datenbank vorhanden sein kann. Diese Aktion wird normalerweise in Verbindung mit dem Parameter-Flag -file/-f verwendet, um ein SQL-Script zu schreiben. Dieses Script kann später verwendet werden, um das Schema in der XML erneut zu erstellen.
- reflect: Generiert eine XML-Darstellung des aktuellen Datenbankschemas.
- createDB: Generiert SQL, um die aktuelle Datenbank erneut zu erstellen. Diese Aktion wird normalerweise in Verbindung mit dem Parameter-Flag -file/-f verwendet, um ein SQL-Script zu schreiben, mit dem das aktuelle Schema in einer neuen Datenbank erneut erstellt werden kann.
- dropDB: Generiert SQL zum Löschen der aktuellen Datenbank. Diese Aktion kann wie createDB mit dem Parameter-Flag -file/-f verwendet werden, um ein Script für das Löschen einer Datenbank zu schreiben, anstatt die Datenbank manuell zu löschen.
- import: Importiert die vorhandene XML-Schemadefinition in die aktuelle Schemafactory. Anmerkung: Diese Aktion bleibt wirkungslos, wenn in der Schemafactory kein Datensatz des Schemas gespeichert ist.
- export: Exportiert die gespeicherte Schemadefinition der aktuellen Schemafactory in eine XML-Datei. Anmerkung: Dabei kann eine leere Datei erstellt werden, wenn in der Schemafactory kein Datensatz des Schemas gespeichert ist.
- deleteTableContents: Diese Aktion implementiert SQL, die alle Zeilen aus allen von OpenJPA ermittelten Tabellen löscht.
Verwendung
- Datenbanktabellen und Datenbankverbindung müssen konfiguriert sein.
- Führen Sie das Tool "wsschema" über die Befehlszeile im Verzeichnis "the $ {profile_root}/bin" aus.
- Das Tool generiert eine XML-Datei, die das Datenbankschema beschreibt.
Beispiele
Fügen Sie die erforderlichen Schemakomponenten zur Datenbank hinzu, um das vorhandene XML-Dokument abzugleichen, ohne Daten zu löschen:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ wsschema.sh targetSchema.xml
![[IBM i]](../images/iseries.gif)
$ wsschema targetSchema.xml
![[Windows]](../images/windows.gif)
$ wsschema.bat targetSchema.xml
Wiederholen Sie diese Aktion wie beim vorherigen Beispiel, aber ändern Sie die Datenbank diesmal nicht, sondern schreiben Sie alle geplanten Änderungen in ein SQL-Script:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
wsschema.sh -f script.sql targetSchema.xml
![[IBM i]](../images/iseries.gif)
wsschema -f script.sql targetSchema.xml
![[Windows]](../images/windows.gif)
wsschema.bat -f script.sql targetSchema.xml
Schreiben Sie ein SQL-Script, das die aktuelle Datenbank erneut erstellt:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ wsschema.sh -a createDB -f script.sql
![[IBM i]](../images/iseries.gif)
$ wsschema -a createDB -f script.sql
![[Windows]](../images/windows.gif)
$ wsschema.bat -a createDB -f script.sql
Aktualisieren Sie das Schema, und löschen Sie den gesamten Inhalt aller Tabellen, die OpenJPA kennt:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ wsschema.bat -a refresh,deleteTableContents
![[IBM i]](../images/iseries.gif)
$ wsschema -a refresh,deleteTableContents
![[Windows]](../images/windows.gif)
$ wsschema.bat -a refresh,deleteTableContents
Löschen Sie die aktuelle Datenbank:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ wsschema.sh -a dropDB
![[IBM i]](../images/iseries.gif)
$ wsschema -a dropDB
![[Windows]](../images/windows.gif)
$ wsschema.bat -a dropDB
Schreiben Sie eine XML-Darstellung des aktuellen Schemas in die Datei schema.xml:
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
$ wsschema.sh -a reflect -f schema.xml
![[IBM i]](../images/iseries.gif)
$ wsschema -a reflect -f schema.xml
![[Windows]](../images/windows.gif)
$ wsschema.bat -a reflect -f schema.xml
Weitere Informationen
Weitere Einzelheiten finden Sie in den Informationen zu JDBC in der Dokumentation von Apache OpenJPA.