programing

하나의 필드를 CLOB로 사용하여 오라클 삽입 스크립트를 작성하는 방법은 무엇입니까?

abcjava 2023. 6. 15. 21:31
반응형

하나의 필드를 CLOB로 사용하여 오라클 삽입 스크립트를 작성하는 방법은 무엇입니까?

하나의 테이블에 하나의 레코드를 삽입하는 데만 사용할 삽입 스크립트를 만들고 싶습니다.

5개의 열이 있으며 그 중 하나는 CLOB 유형입니다.

내가 시도할 때마다 4000보다 큰 문자열을 삽입할 수 없다고 나옵니다.

저는 clob을 하나의 필드로 하는 insert 문이 필요합니다.

INSERT INTO tbltablename 
            (id, 
             NAME, 
             description, 
             accountnumber, 
             fathername) 
VALUES      (1, 
             N'Name', 
             clob'some very long string here, greater than 4000 characters', 
             23, 
             'John') ;

SQL 문자열은 4000바이트를 초과할 수 없지만 Pl/SQL에는 32767바이트의 문자열이 있을 수 있습니다.익명 블록을 통해 큰 문자열을 삽입하는 예를 보려면 아래를 참조하십시오. 이 경우 필요한 모든 작업을 수행할 수 있습니다.

참고 varchar2(32000)를 CLOB로 변경했습니다.

set serveroutput ON 
CREATE TABLE testclob 
  ( 
     id NUMBER, 
     c  CLOB, 
     d  VARCHAR2(4000) 
  ); 

DECLARE 
    reallybigtextstring CLOB := '123'; 
    i                   INT; 
BEGIN 
    WHILE Length(reallybigtextstring) <= 60000 LOOP 
        reallybigtextstring := reallybigtextstring 
                               || '000000000000000000000000000000000'; 
    END LOOP; 

    INSERT INTO testclob 
                (id, 
                 c, 
                 d) 
    VALUES     (0, 
                reallybigtextstring, 
                'done'); 

    dbms_output.Put_line('I have finished inputting your clob: ' 
                         || Length(reallybigtextstring)); 
END; 

/ 
SELECT * 
FROM   testclob; 


 "I have finished inputting your clob: 60030"

저는 가장 많이 투표된 답보다 더 간단한 해결책으로 제 문제를 해결했습니다.

빅 클롭 문자열을 여러 문자열로 분할해야 합니다. 각 문자열은 4000자 미만이고 각 문자열은 다음을 사용하여 변환합니다.to_clob방법, 그리고 그것들을 연결합니다.||교환입니다.

다음은 최종 삽입 문의 예입니다.

INSERT INTO tbltablename 
            (id, 
             name, 
             big_clob_description) 
VALUES      (1, 
             N'A Name', 
             to_clob('string with less than 4000 chars') 
             || to_clob('rest of string here, with less than 4000 chars') 
) ;

내 삽입 코드는 스크립트에 의해 생성되었고, 문자열을 끊는 것은 어렵지 않았습니다.

사용할 수 있습니다.to_clob기능도 합니다.

INSERT INTO tbltablename 
            (id, 
             NAME, 
             description, 
             accountnumber, 
             fathername) 
VALUES      (1, 
             N'Name', 
             to_clob('clob''some very long string here, greater than 4000 characters'), 
             23, 
             'John') ;

자세한 내용은 https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions182.htm 에서 확인할 수 있습니다.

안부 전해요.

언급URL : https://stackoverflow.com/questions/3890567/how-to-write-oracle-insert-script-with-one-field-as-clob

반응형