programing

Oracle CLOB가 4000자를 초과하여 삽입할 수 없습니까?

lastcode 2023. 7. 6. 22:16
반응형

Oracle CLOB가 4000자를 초과하여 삽입할 수 없습니까?

CLOB 유형 열에 4000자 이상을 삽입하려면 어떻게 해야 합니까?

--create test table s
create table s
(
      a clob
);
insert into s values('>4000 char')

오류가 발생합니다.

ORA-01704: 문자열이 너무 깁니다.

4,000자 이상의 문자열을 한 번 삽입하고 싶습니다.제가 그걸 어떻게 합니까?가능합니까?

오라클 레퍼런스를 읽었을 때CLOB최대 4GB(기가바이트)를 절약할 수 있습니까?

  • 긴 문자열을 4000자 이하의 청크로 분할
  • to_clob() 함수를 사용하여 각 청크에 대한 clobs 생성
  • 근육을 연결합니다.

다음은 예입니다.

insert into <table> (clob_column)
  values
  (
      to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ||to_clob(' <=4000 symbols ')
    ...
    ||to_clob(' <=4000 symbols ')
  );

한 번 삽입할 수 있는 최대 문자 수는 4000자(Oracle의 최대 문자열 리터럴)입니다.그러나 lob 기능을 사용할 수 있습니다.dbms_lob.append()최대 4000자의 청크를 클로브에 추가하려면:

CREATE TABLE don (x clob);


DECLARE 
 l_clob clob;
BEGIN
  FOR i IN 1..10
  LOOP
    INSERT INTO don (x) VALUES (empty_clob()) --Insert an "empty clob" (not insert null)
    RETURNING x INTO l_clob;

    -- Now we can append content to clob (create a 400,000 bytes clob)
    FOR i IN 1..100
    LOOP
      dbms_lob.append(l_clob, rpad ('*',4000,'*'));
      --dbms_lob.append(l_clob, 'string chunk to be inserted (maximum 4000 characters at a time)');
    END LOOP;
  END LOOP;
END;

사용clob열 및 사용sqlldrCSV에서 데이터를 가져옵니다.

sqldeveloper필요한 것을 생성할 수 있습니다.control .ctl대본을 작성합니다.

언급URL : https://stackoverflow.com/questions/18394691/oracle-clob-cant-insert-beyond-4000-characters

반응형