Estou usando a imagem oficial do Oracle 23 Docker. Tenho uma grande quantidade de dados de teste que precisam ser executados no banco de dados para que estejam disponíveis para desenvolvedores que usam a imagem.
Eu sei que posso colocar os scripts .sql /docker-entrypoint-initdb.d/startup
na imagem e eles serão executados automaticamente pelo SQL Plus na imagem.
O problema é que não quero ver:
db_1 | 1 row created.
db_1 |
db_1 |
db_1 | 1 row created.
db_1 |
db_1 |
db_1 | 1 row created.
db_1 |
db_1 |
db_1 | 1 row created.
db_1 |
db_1 |
db_1 | 1 row created.
db_1 |
db_1 |
db_1 | 1 row created.
db_1 |
db_1 |
(etc...)
db_1 | Commit complete.
Na saída do meu console. Prefiro ver algo como:
db_1 | 10,000 rows created.
db_1 |
db_1 |
db_1 | Commit complete.
Ou mesmo agrupar em grupos de 100 ou algo assim reduziria bastante a quantidade de produção.
Isso é possível?
Eu tentei usar INSERT ALL...
, mas ainda imprime cada inserção individualmente.
O script final deve ser compatível com versões anteriores do 19c, se possível.
Opção 1: múltiplas inserções (sua solução atual)
Se você fizer:
Então você obtém instruções para cada linha:
Opção 2: inserções de múltiplas linhas usando
INSERT ... SELECT
Se você fizer:
Então você obtém instruções para cada tabela:
Opção 3: inserções de múltiplas linhas usando
INSERT ALL
Se você fizer:
Então você obtém uma única instrução para todas as tabelas:
Opção 4: agrupar inserções em um bloco PL/SQL
O que você também pode fazer é agrupar todas as
INSERT
instruções em um bloco anônimo PL/SQL:Então você obtém uma única declaração de sucesso (ou falha) de todo o bloco:
Todas essas declarações devem ser compatíveis com a maioria (todas?) das versões do Oracle.
Oráculo 11g violino