Mais
A melhor maneira de fazer inserções multi-linha no Oracle?
I'estou procurando uma boa maneira de executar inserções de várias linhas em uma base de dados Oracle 9. O seguinte funciona no MySQL mas não't parece ser suportado no Oracle.
INSERT INTO TMP_DIM_EXCH_RT
(EXCH_WH_KEY,
EXCH_NAT_KEY,
EXCH_DATE, EXCH_RATE,
FROM_CURCY_CD,
TO_CURCY_CD,
EXCH_EFF_DATE,
EXCH_EFF_END_DATE,
EXCH_LAST_UPDATED_DATE)
VALUES
(1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
(6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008');
242
3
Isto funciona no Oracle:
A coisa a lembrar aqui é usar a declaração "a partir do dual".
(fonte)
Use o SQL*Loader. É preciso um pouco de configuração, mas se este é't um desligado, vale a pena.
**Criar tabela***
**Criar CSV***
**Criar arquivo de controle de carregamento***
Executar comando SQLLoader
**Confirma inserir***
SQL*Loader tem muitas opções, e pode tomar praticamente qualquer arquivo de texto como sua entrada. Você pode até mesmo inlinear os dados no seu arquivo de controle, se quiser.
Aqui está uma página com mais alguns detalhes -> SQL*Loader
Se você já tiver os valores que deseja inserir em outra tabela, poderá inserir a partir de uma expressão selecionada.
Caso contrário, você pode listar um monte de instruções de inserção de uma única linha e enviar várias consultas em massa para poupar tempo para algo que funciona tanto no Oracle como no MySQL.
@Espo's também é uma boa solução que irá funcionar tanto na Oracle como no MySQL se os seus dados estiverem't já numa tabela.