wsschema 命令
该模式工具可用于查看 XML 格式的数据库模式或将 XML 模式匹配至现有数据库。
wsschema 工具可反映当前数据库模式,并根据情况将它转换为 XML 表示,以备进一步操作。模式工具也可以接受 XML 模式定义,计算 XML 模式与现有数据库模式之间的差别,然后应用必要的更改以使数据库与 XML 模式相符。该模式工具所使用的 XML 格式是从不同供应商所使用的 SQL 方言之间的差别中提取的。该工具还自动调整它的 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>:此标志确定是否可在现有表上操作主键。
缺省值为 true。
- -foreignKeys/fk <true/t | false/f>:此标志确定是否可在现有表上操作外键。
缺省值为 true。
- -record/-r <true/t | false/f>:此标志允许或阻止将该模式工具所作的模式更改写入当前模式工厂。
选择 true 以允许写入模式更改,或选择 false 以阻止写入模式更改。缺省值设置为 true。
- -schemas/-s <schema list>:表示运行该模式工具时 OpenJPA 应该访问的模式名和表名列表。
这相当于将 openjpa.jdbc.Schemas 属性设置为运行一次。
要点: 该模式工具接受 -action/-a 标志。可在列表中写入多个操作,操作之间用逗号分隔。可用操作为:- add:如果未指定任何其他操作,那么这是缺省操作。它使用给定的 XML 文档通过添加表、列、索引或其他组件来更新该模式。此操作从不删除任何模式组件。
- retain:此操作将所有模式组件保留在给定的 XML 定义中,但从数据库中删除其余组件。此操作从不添加任何模式组件。
- drop:删除模式 XML 中的所有模式组件。只有在删除 XML 中列出的所有列后,列的数目为 0 时,此操作才会删除表。
- refresh:此操作相当于将 retain 和 add 功能一起使用。
- build:生成 SQL 以构建一个与提供的 XML 文件中的模式相匹配的模式。与 add 操作不同的是,此选项不考虑 XML 文件中定义的模式部分在数据库中已存在这一情况。此操作通常与 -file/-f 参数标志配合使用,以编写 SQL 脚本。此脚本稍后可用于在 XML 中重新创建模式。
- reflect:生成当前数据库模式的 XML 表示。
- createDB:此操作生成 SQL 以重新创建当前数据库。此操作通常与 -file/-f 参数标志配合使用,以编写可用于在新数据库上重新创建当前模式的 SQL 脚本。
- dropDB:生成 SQL 以断开当前数据库。 与 createDB 操作相似,此操作可与 -file/-f 参数标志配合使用,以编写数据库删除脚本,而不是手动执行数据库删除操作。
- import:将给定的 XML 模式定义导入当前模式工厂中。注: 如果模式工厂未存储模式记录,那么此操作将不执行任何处理。
- export:将当前模式工厂存储的模式定义导出至 XML 文件。注: 如果模式工厂未存储模式记录,那么此操作将生成一个空文件。
- deleteTableContents:此操作实现 SQL 以从 OpenJPA 找到的所有表中删除所有行。
用法
- 您必须已配置数据库表和数据库连接。
- 在命令行中从 $ {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 信息。