2014-05-20 2 views
2

우리는 데이터베이스로 MS-SQL과 Oracle을 사용하고 있습니다.SQL Server TO Oracle 테이블 만들기

우리는

@Column(name="UCAALSNO",nullable=false,columnDefinition="nvarchar(20)") 

우리가 열 정의 선언 한 주석 클래스 파일에서 테이블을 생성하는 최대 절전 모드 주석을 사용하고이 MS-SQL에 대해 잘 작동합니다.

오라클의 경우 nvarchar2 만 지원하므로 nvarchar은 예외를 발생시킵니다.

두 데이터베이스에 대해 데이터 유형 nvarchar을 지원하는 주석 파일을 만드는 방법.

답변

0

넌 NCHAR을 사용할 수

MSSQL에서 :

NCHAR [(N)]

고정 길이 유니 코드 문자열 데이터. n은 문자열 길이를 정의하며 은 1에서 4,000 사이의 값이어야합니다. 저장소 크기는 n 번 바이트의 두 배입니다. 데이터 정렬 코드 페이지에서 2 바이트 문자를 사용하는 경우 저장소 크기는 여전히 n 바이트입니다. 문자열에 따라 스토리지 크기가 n 바이트 인 은 n에 지정된 값보다 작을 수 있습니다. nchar의 ISO 동의어는 국가 별 문자 및 국가 별 문자입니다. Oracle

동안 :

NCHAR

NCHAR 컬럼의 최대 길이는 2000 바이트이다. 2000 자까지 저장할 수 있습니다. 실제 데이터는 2000 년 최대 바이트 제한 의 영향을받습니다. 두 크기 제한은 런타임에서 동시에 충족되어야합니다.

Nchar은 고정 된 공간을 차지하므로 매우 큰 테이블의 경우 nchar와 nvarchar간에 상당한 공간 차이가 있으므로이 점을 고려해야합니다.

보통 프로덕션 DB에 대한 증분 DB 스키마 마이그레이션 스크립트가 있으며 통합 테스트 인 메모리 데이터베이스 (예 : HSQLDB 또는 H2)에 대해서만 Hibernate DDL 생성에만 의존합니다. 이렇게하면 프로덕션 스키마 유형을 먼저 선택하고 "columnDefinition"은 테스트 스키마에만 적용되므로 충돌이 발생하지 않습니다.

내가 차라리 거라고, 점을 감안를 : 당신이 기본 문자 인코딩을 설정하는 것이 좋습니다 수 있도록

당신은 N (VAR) CHAR (2) 추가 복잡성을 무시하는 너무 this을 읽어보십시오 유연성을 극대화하는 접근 방식으로 가면 전체 데이터베이스 을 유니 코드 (AL32UTF8)로 변환하고 있습니다.

VARCHAR2, VARCHAR has been synonym을 VARCAHR2와 함께 사용하는 것이 좋습니다.

는 오라클 9.2과 8.1.7 문서는 지금 까지 그들이하지 않은, 본질적으로 같은 것은, 그래서 오라클은 지속적으로 VARCHAR의 사용을 권장하지 비록 말 :

은 그래서 DBA의 의견을 인용 VARCHAR2와 패리티를 바꿀 수있는 모든 것.

대부분의 DB에서 지원되므로 VARCHAR도 시도해보십시오.