2010-12-21 3 views
5

일련의 대형 텍스트 파일을 저장하는 테이블을 Oracle에 작성해야합니다. Oracle 데이터 유형을 살펴본 후에는 파일을 저장하기 위해 어떤 유형을 사용해야하는지 명확하지 않습니다.텍스트 파일 용 Oracle Data Type?

VARCHAR2와 같은 텍스트 특정 유형의 한계는 매우 작습니다 (32K). 다른 유형은 텍스트 파일 (예 : BFILE)에 대해 올바른 일치 항목으로 보이지 않습니다.

누구나 올바른 유형의 의견을 사용할 수 있습니까?

+2

32K는 PL/SQL에만 적용됩니다. 테이블이나 일반 SQL에서 VARCHAR2는 최대 4000 바이트까지만 저장할 수 있습니다. –

답변

9

CLOB와 BLOB/BFILE의 차이점은 CLOB가 텍스트로 처리된다는 것입니다. 즉, 데이터베이스에서 CLOB를 가져 오는 경우 데이터베이스 문자 집합에서 클라이언트 문자 집합으로 필요한 모든 변환을 수행합니다 (예 : ê에서 악센트 제거). 마찬가지로 CLOB가 클라이언트에 의해 작성 될 때, 클라이언트 문자 세트에서 데이터베이스 문자 세트로의 변환이있을 수 있습니다. 클라이언트와 데이터베이스 문자 세트가 모두 같으면 변환이 필요하지 않거나 수행되지 않습니다.

NCLOB는 데이터베이스 문자 세트가 아니라 NLS NCHAR 문자 세트를 사용한다는 점을 제외하면 CLOB과 유사합니다.

BLOB/BFILE은 변환 규칙의 적용을받지 않습니다.

일반적으로 텍스트 용으로 CLOB를 사용 하겠지만 문자 세트 변환이 조금이라도 가능하지 않도록 체크섬/감사 내역 논리가있는 경우 BLOB/BFILE을 선택할 수 있습니다. 나는 장기 또는 장기를 고려하지 않을 것이다.

1

는 CLOB 또는 문자 데이터에 대한 LOB 데이터 유형이 CLOB 및 NCLOB 있습니다

+2

여기서 Long은 더 이상 사용되지 않으므로 가능한 경우 CLOB로 이동하십시오 (Oracle 버전이 오래 전인 경우 제외). – Thilo

1

긴 하나를 사용하는 오라클의 버전에 따라 다릅니다. 최대 8TB의 문자 데이터 (CLOB) 또는 자국어 문자 세트 데이터 (NCLOB)를 저장할 수 있습니다.

나중에 기존 LONG RAW 열을 LOB 열로 변환하는 것이 좋습니다. LOB C 럼은 LONG C 럼보다 제한이 훨씬 적습니다. 또한 LOB 기능은 모든 릴리스에서 향상되었지만 LONG RAW 기능은 여러 릴리스에서 정적이었습니다.

관련 문제