在DB2数据库中插入多行

Fra*_*umn 31 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);
Run Code Online (Sandbox Code Playgroud)

这个查询不起作用.我不知道在DB2中是否有更多语法正确的方法来执行此操作.但是插入我的测试数据会很有用.

bha*_*mby 29

我假设您正在使用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
Run Code Online (Sandbox Code Playgroud)

您的声明适用于DB2 for Linux/Unix/Windows(LUW),至少在我的LUW 9.7上进行测试时.


Hog*_*gan 18

更新 - 更少罗嗦的版本

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')
Run Code Online (Sandbox Code Playgroud)

以下内容也适用于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')
Run Code Online (Sandbox Code Playgroud)