wsschema コマンド
schema ツールを使用すると、データベース・スキーマを XML 形式で表示したり、XML スキーマを既存データベースとマッチングしたりすることができます。
wsschema ツールを現行データベース・スキーマに適用し、スキーマを XML 表現に変換して、さらに操作することができます。 schema ツールでは、XML スキーマ定義を取得したり、XML と既存データベース・スキーマの違いを計算したり、データベースを XML スキーマに対応させるために必要な変更を適用したりすることができます。 schema ツールで使用される XML フォーマットは、さまざまなベンダーで使用される SQL ダイアレクトの違いに基づいて抽出されます。 schema ツールは、また、SQL を外部依存性に自動的に適合させるため、スキーマを操作するための一般的な方法として便利です。
構文
コマンド構文は次のようになります。
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
![[z/OS]](../images/ngzos.gif)
wsschema.sh [parameters][arguments]
![[IBM i]](../images/iseries.gif)
wsschema [parameters][arguments]
![[Windows]](../images/windows.gif)
wsschema.bat [parameters][arguments]
このコマンドは、profile_root ディレクトリーの bin サブディレクトリーから実行します。
パラメーター
- -ignoreErrors/-i <true/t | false/f>:
false に設定している場合に、ツールでデータベース・エラーが検出されると、例外が発生します。
デフォルトでは、false に設定されます。
- -file/-f <stdout | output file>: 計画されたスキーマの変更をデータベースにコミットしないで、変更のための SQL スクリプトを記述する場合は、このオプションを使用します。
このオプションを export アクションまたは reflect アクションと共に使用すると、エクスポートされたスキーマ XML の書き込みに、指定されたファイルが使用されます。 ファイル名にクラスパス内のリソースを指定した場合、データはこのリソースに書き込まれます。 標準出力への書き込みには、stdout が使用されます。デフォルト設定は stdout です。
- -openjpatables/-ot <true/t | false/f>: スキーマを反映している間に、このパラメーターは OPENJPA_ で名前が開始するテーブルおよびシーケンスに反映させるかどうかを判別します。
特定の OpenJPA コンポーネントでは、テーブル・スキーマ・ファクトリーなどの、テーブルやシーケンスを使用することができます。 他のアクションを使用している場合は、openjpaTables によって、これらのテーブルを削除できるかどうかが制御されます。 デフォルト設定は false です。
- -dropTables/-dt <true/t | false/f>: このオプションが true に設定されている場合、retain および refresh アクション中に使用されないテーブルは、スキーマによって削除されます。
デフォルトは true です。
- -dropSequences/-dsq <true/t | false/f>: このオプションが true に設定されている場合、retain および refresh アクション中に使用されないシーケンスは、スキーマによって削除されます。
デフォルトは true です。
- -sequences/-sq <true/t | false/f>: このフラグは、シーケンスを操作できるかどうかを判別します。
デフォルトは true です。
- -indexes/-ix <true/t | false/f>: このフラグは、既存テーブルで索引を操作できるかどうかを判別します。
デフォルトは true です。
- -primaryKeys/-pk <true/t | false/f>: このフラグは、既存テーブルで 1 次キーを操作できるかどうかを判別します。
デフォルトは true です。
- -foreignKeys/fk <true/t | false/f>: このフラグは、既存テーブルで外部キーを操作できるかどうかを判別します。
デフォルトは true です。
- -record/-r <true/t | false/f>: このフラグは、schema ツールによるスキーマ変更の現行スキーマ・ファクトリーへの書き込みを許可または禁止します。
スキーマ変更の書き込みを許可する場合は true を、禁止する場合は false を選択します。デフォルトでは、true に設定されます。
- -schemas/-s <schema list>: schema ツールを実行している場合に OpenJPA がアクセスする必要があるスキーマおよびテーブルの名前のリストを示します。
これは、openjpa.jdbc.Schemas プロパティーを 1 回実行するように設定するのと同じです。
重要: schema ツールでは、-action/-a フラグを使用できます。 コンマ区切りリストに複数のアクションを指定することができます。 使用可能なアクションは次のとおりです。- add: 他のアクションが指定されていない場合は、これがデフォルト・アクションです。 テーブル、列、索引、またはその他のコンポーネントが追加され、指定された XML 文書によってスキーマが更新されます。 このアクションにより、スキーマ・コンポーネントが削除されることはありません。
- retain: このアクションは、指定された XML 定義内のすべてのスキーマ・コンポーネントを維持し、残りのコンポーネントをデータベースから削除します。 このアクションにより、スキーマ・コンポーネントが追加されることはありません。
- drop: スキーマ XML 内のすべてのスキーマ・コンポーネントを削除します。 XML にリストされたすべての列を削除した後にテーブルに列が存在しない場合にのみ、このアクションを実行するとテーブルが削除されます。
- refresh: このアクションは retain および add 関数と同等です。
- build: 指定された XML ファイル内のスキーマと一致するスキーマを作成するための SQL を生成します。 add アクションと異なり、このオプションでは、XML ファイルで定義されたスキーマの一部がデータベース内に既に存在する可能性があることは考慮されません。 このアクションは、通常 SQL スクリプトを記述するために、-file/-f パラメーター・フラグと共に使用します。 このスクリプトは、XML 内のスキーマを再作成するために、あとで使用することができます。
- reflect: 現行データベース・スキーマの XML 表現を生成します。
- createDB: このアクションは現行データベースを再作成するための SQL を生成します。 このアクションは、通常新規データベースに現行スキーマを再作成するために使用できる SQL スクリプトを記述するために、-file/-f パラメーター・フラグと共に使用します。
- dropDB: 現行データベースを削除するための SQL を生成します。 createDB と同様に、-file/-f パラメーター・フラグと併用すると、データベースを手動で削除する代わりに、データベース削除のためのスクリプトを記述することができます。
- import: 現行スキーマ・ファクトリーに、指定された XML スキーマ定義をインポートします。
注: スキーマ・ファクトリーにスキーマのレコードが保管されていない場合、このアクションでは何も実行されません。
- export: 現行スキーマ・ファクトリーに保管されたスキーマ定義を XML ファイルにエクスポートします。注: 現行スキーマ・ファクトリーにスキーマのレコードが保管されていない場合は、このアクションによって空のファイルが作成されることがあります。
- deleteTableContents: このアクションでは、OpenJPA が検索するすべてのテーブルからすべての行を削除するための SQL を実行します。
使用法
- データベース表およびデータベース接続を構成する必要があります。
- $ {profile_root}/bin ディレクトリーで、コマンド行から wsschema ツールを実行します。
- このツールでは、データベース・スキーマを記述する XML ファイルが生成されます。
例
データを削除しないで、指定された 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 targetSchema.xml
![[IBM i]](../images/iseries.gif)
$ wsschema targetSchema.xml
![[Windows]](../images/windows.gif)
$ wsschema.bat targetSchema.xml
上記の例と同じアクションを繰り返しますが、データベースを変更しないで、計画された変更を SQL スクリプトに書き込みます。
![[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
現行データベースを再作成する SQL スクリプトを記述します。
![[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
スキーマを更新し、OpenJPA が認識しているすべてのテーブルの内容すべてを削除します。
![[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
現行データベースを削除します。
![[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
現行スキーマの XML 表現をファイル 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
追加情報
詳しくは、Apache OpenJPA の資料にある JDBC の情報を参照してください。