inserir várias linhas na base de dados DB2

quero inserir várias linhas numa tabela DB2. Tenho uma pergunta parecida com esta.

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);
Esta pergunta não funciona. Não sei se há uma maneira mais sintaticamente correta de fazer isso em DB2. Mas seria útil inserir os meus dados de teste.

 29
Author: Frantumn, 2012-07-31

3 answers

Estou a assumir que estás a usar o DB2 para o z/OS, O que, infelizmente (por alguma razão, nunca entendi bem porquê) não suporta usar uma lista de valores onde uma selecção completa seria apropriada.

Pode usar uma selecção como a que está em baixo. É um pouco pesado, mas funciona.

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

A sua declaração funcionaria em DB2 para Linux / Unix / Windows( LUW), pelo menos quando a testei no meu LUW 9.7.

 25
Author: bhamby, 2012-07-31 16:07:59

Actualização-ainda menos versão wordy

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

O seguinte também funciona para DB2 e é ligeiramente menos wordy

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
Author: Hogan, 2015-12-31 18:24:31

Outro Método

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
Author: Esperento57, 2016-11-15 18:36:55