web-dev-qa-db-ja.com

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);

このクエリは機能しません。 DB2でこれを行うより構文的に正しい方法があるかどうかはわかりません。ただし、テストデータを挿入すると便利です。

30
Frantumn

DB2 for z/OSを使用していると仮定していますが、残念ながら(何らかの理由で、完全に選択することが適切な値リストの使用をサポートしていません)。

以下のような選択を使用できます。少し扱いに​​くいですが、動作します:

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でテストした場合、ステートメントはDB2 for Linux/Unix/Windows(LUW)で機能します。

29
bhamby

更新-さらに冗長なバージョン

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')
18
Hogan

他の方法

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
Esperento57