CLOB
이외의 많은 양의 데이터를 Oracle 10g에 저장하는 다른 방법이 있습니까? 이 필드에 저장해야하는 JSON 파일의 최대 크기는 150KB입니다. 이 목적으로 VARCHAR2
또는 NTEXT
을 사용할 수 있습니까? CLOB
을 사용하지 않으려면 JSON 파일의 내용을 텍스트로 복사 할 수 있습니다. 도움을 미리 요청 해 주셔서 감사합니다.JSON 저장을위한 Oracle CLOB 대신
답변
10g에서 VARCHAR2
또는 NVARCHAR2
열의 최대 크기는 4kb에 불과합니다. 12c에서 EXTENDED
으로 설정된 MAX_STRING_SIZE
서버 속성이있는 경우이 제한은 can be increased to 32kb이지만 여전히 150kb 가깝습니다.
CLOB
을 사용해야하거나 150kb를 4kb 청크로 나누어야합니다.
:
file_id line_id line_data
---------------------------------
1 1 this
1 2 is
1 3 where
1 4 your
1 5 data
1 6 lives
또는 당신이 12C로 업그레이드 할 수있는 경우는, 당신은을 활용할 수 있습니다 native JSON support.
마지막으로 한 가지는 BLOB가 바이너리로 저장되어 있지만 json을 저장하는 것은 잘못된 것입니다. BLOB 필드에 메뉴 세부 사항이있는 파일. 그 결과는 무엇일까요? – RBz
JSON은 바이너리 인코딩이 아니므로 BLOB를 사용하는 이유를 모르겠습니다. – ninesided
@RBz - BLOB은 바이너리 데이터를 의미합니다. 실제로 "문자열"이라는 사실을 알고 있더라도 다른 사람 (사용자 제외)은 어떤 인코딩을 사용했는지 알지 못합니다. ASCII, UTG-8 또는 EBDIC입니까? 데이터베이스는 인코딩 체계를 알지 못하기 때문에 문자열 인 것처럼 색인을 생성 할 수 없습니다. 예를 들어 BLOB에서 전체 텍스트 검색을 사용할 수 없습니다. 또한 Java 응용 프로그램은 byte []를 String으로 변환 할 때 charset을 알아야합니다. 귀하의 경우에는 BLOB의 사용을 의미, 데이터베이스 수 없습니다 (그리고하지 않습니다) 신경 안에 정확히 저장됩니다. – ibre5041
CLOB를 사용하지 않으려는 이유가 있습니까? – ninesided
아니요, 대안이 없습니다. 'varchar '의 최대 크기는 4k이므로 사용할 수 없습니다. 'CLOB'은 더 많은 것을 저장하려는 경우에만 사용할 수 있습니다. 12.1.0.2에서는 새로운'json' 데이터 타입을 사용할 수도 있습니다. (12.1.0.1에서는 사용할 수 없습니다.) –
JPA와 최대 절전 모드를 사용하고 있습니다. 이 필드의 내용을 문자열로 가져 오려고합니다. blob과 clob은이 작업을 지옥으로 만듭니다. 이제 며칠 동안 그 프로세스를 고수하고 다음과 같은 질문에 대한 대답을 얻었습니다. http://stackoverflow.com/questions/26756432/converting-blob-from-oracle-db-to-string 여전히 유용하지는 않습니다. 나 같은 초보자를 위해서. 좀 더 쉽게하고 싶습니다. – RBz