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 스크립트를 작성합니다.
내보내기 또는 반영 조치와 함께 사용되는 경우, 이름 지정된 파일은 내보낸 스키마 XML을 작성하는 데 사용됩니다. 파일 이름이 클래스 경로에서 자원이면 데이터는 해당 자원에 작성됩니다. stdout를 사용하여 표준 출력에 작성합니다. 기본 설정은 stdout입니다.
- -openjpatables/-ot <true/t | false/f>:
스키마를 반영할 때 이 매개변수는 OPENJPA_로 시작하는 이름으로 테이블과 시퀀스를 반영할지 여부를 판별합니다.
특정 OpenJPA 컴포넌트는 테이블 스키마 팩토리와 같이 이러한 테이블과 시퀀스를 사용할 수 있습니다. 다른 조치 사용 시, openjpaTables는 이 테이블을 삭제할 수 있는지를 제어합니다. 기본 설정은 false입니다.
- -dropTables/-dt <true/t | false/f>:
이 옵션이 true로 설정된 경우,
스키마는 보유 및 새로 고치기 조치 중 사용되지 않는 테이블을 삭제합니다.
기본값은 true입니다.
- -dropSequences/-dsq <true/t |
false/f>: 이 옵션이 true로 설정된 경우,
스키마는 보유 및 새로 고치기 조치 중 사용되지 않는 시퀀스를 삭제합니다.
기본값은 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: XML 파일에 제공된 것과 일치하는 스키마를 빌드하도록 SQL을 생성합니다. add 조치와 달리, 이 옵션은 XML 파일에 정의된 스키마의 해당 부분이 이미 데이터베이스에 존재할 수 있다는 점을 고려하지 않습니다. 이 조치는 일반적으로 -file/-f 매개변수 플래그와 함께 사용되어 SQL 스크립트를 작성합니다. 이 스크립트는 후에 XML에서 스키마를 재작성하는 데 사용될 수 있습니다.
- reflect: 현재 데이터베이스 스키마의 XML 표시를 생성합니다.
- createDB: 이 조치는 현재 데이터베이스를 재작성하는 SQL을 생성합니다. 이 조치는 일반적으로 -file/-f 매개변수 플래그와 함께 사용되어 새 데이터베이스에 현재 스키마를 재작성하는 데 사용될 수 있는 SQL 스크립트를 작성합니다.
- 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 정보를 읽으십시오.