我想多行插入到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中做到这一点。 但它会是插入我的测试数据非常有用。
我假设你正在使用的DB2 for z / OS的,不幸的是(不管是什么原因,我从来没有真正理解为什么)使用值列表,其中全选择将是合适的不支持。
您可以使用select像下面。 这是一个有点笨拙,但它的工作原理:
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
您的发言将工作在DB2 for Linux的/ UNIX / Windows的(LUW),至少在我测试了我的LUW 9.7。
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')
另一种方法
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