복붙노트

[SQL] DB2 데이터베이스에 여러 행을 삽입

SQL

DB2 데이터베이스에 여러 행을 삽입

나는 DB2 테이블에 여러 행을 삽입 할. 나는 모습이 좋아하는 쿼리가

insert into tableName 
(col1, col2, col3, col4, col5) 
values 
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5);

이 쿼리 does't 작동합니다. DB2에서이 작업을 수행 할 수있는 더 문법적으로 올바른 방법이 있는지 모르겠어요. 그러나 내 테스트 데이터를 삽입하는 것이 유용 할 것입니다.

해결법

  1. ==============================

    1.나는 값 목록 전체 선택이 될 것입니다 적절한 사용은 지원하지 않습니다 불행히도 (어떤 이유, 정말 이유를 이해할 수 없다) Z / OS, DB2를 사용하고 있으리라 믿고있어.

    나는 값 목록 전체 선택이 될 것입니다 적절한 사용은 지원하지 않습니다 불행히도 (어떤 이유, 정말 이유를 이해할 수 없다) Z / OS, DB2를 사용하고 있으리라 믿고있어.

    아래처럼 선택을 사용할 수 있습니다. 그것은 약간의 다루기 힘든,하지만 그것을 작동합니다 :

    INSERT INTO tableName (col1, col2, col3, col4, col5) 
    SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
    SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1
    

    귀하의 문은 적어도 내 LUW 9.7에 그것을 테스트 할 때, 리눅스 / 유닉스 / 윈도우 (LUW) 용 DB2에 작동합니다.

  2. ==============================

    2.UPDATE - 더 적은 말의 버전

    UPDATE - 더 적은 말의 버전

    INSERT INTO tableName (col1, col2, col3, col4, col5) 
    VALUES ('val1', 'val2', 'val3', 'val4', 'val5'),
           ('val1', 'val2', 'val3', 'val4', 'val5'),
           ('val1', 'val2', 'val3', 'val4', 'val5'),
           ('val1', 'val2', 'val3', 'val4', 'val5')
    

    또한 DB2 작동 및 약간 덜 장황하다 다음

    INSERT INTO tableName (col1, col2, col3, col4, col5) 
    VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
    VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
    VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
    VALUES ('val1', 'val2', 'val3', 'val4', 'val5')
    
  3. ==============================

    3.다른 방법

    다른 방법

    INSERT INTO tableName (col1, col2, col3, col4, col5)
    select * from table(                        
                        values                                      
                        (val1, val2, val3, val4, val5),   
                        (val1, val2, val3, val4, val5),   
                        (val1, val2, val3, val4, val5),   
                        (val1, val2, val3, val4, val5)    
                        ) tmp
    
  4. ==============================

    4.나는 호건에 의해 게시 된 의견에 동의하지 않는다. 이러한 지시 사항은 IBM DB2 미니 위해 작동하지만, DB2 Z / OS의 경우는 아니다.

    나는 호건에 의해 게시 된 의견에 동의하지 않는다. 이러한 지시 사항은 IBM DB2 미니 위해 작동하지만, DB2 Z / OS의 경우는 아니다.

    다음은 그 예이다 :

    Exception data: org.apache.ibatis.exceptions.PersistenceException:
    The error occurred while setting parameters
    
    SQL: INSERT INTO TABLENAME(ID_, F1_, F2_, F3_, F4_, F5_) VALUES
     (?,          1,          ?,          ?,          ?,          ?),          
     (?,          1,          ?,          ?,          ?,          ?)
    
    
    Cause: com.ibm.db2.jcc.am.SqlSyntaxErrorException: 
    ILLEGAL SYMBOL ",". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: FOR <END-OF-STATEMENT> NOT ATOMIC. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.25.17
    

    내가 확인할 수 그래서 인라인 쉼표 (... 어쩌면 당신이 작업을 진행하는 데 몇 가지 소품을 공급할 수) 대량 삽입이 DB2 Z / OS에서 작동하지 않는 분리

  5. from https://stackoverflow.com/questions/11743265/insert-multiple-rows-into-db2-database by cc-by-sa and MIT license