Como gerar INSERT's INTO?

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Viva,

Estou a fazer uma migração de dados...

Neste momento tenho os dados todos migrados numa base de dados de testes. Queria agora passar estes dados para produção.

Os scripts de migração que usei são todos deste tipo:

Selecionar tudo

INSERT INTO M4T_HIST_CLASSIFICACOES
SELECT
'88',
HC.ID_EMPREGAD,
HC.DAT_INI_ACT_EMP,
HC.DAT_INICIO,
HC.DAT_FIM,
HC.ID_CLASS,
HC.ID_MOTIVO_ALTER,
HC.COMENT,
HC.ID_UTILIZ,
HC.DATA_ULT_ACTUAL
from m4t_hist_classificacoes HC, m4t_fases_act FA 
where HC.id_sociedad = '87' 
and HC.id_sociedad = FA.id_sociedad
and HC.Id_Empregad = FA.Id_Empregad
and HC.DAT_INI_ACT_EMP = FA.DAT_INI_ACT_EMP
and (FA.dat_said is null
or FA.dat_said >= '01-JAN-2009');
COMMIT;
Quando corro estes Scripts, os inserts são feitos para a base de dados... o que eu agora necessitava era de uma forma de gerar os "INSERT INTO M4T_HIST_CLASSIFICACOES..." para texto... quero dizer, devolver-me os inserts into nesta forma:

Selecionar tudo

INSERT INTO M4T_HIST_CLASSIFICACOES values ('data1', 'data', 'data');
INSERT INTO M4T_HIST_CLASSIFICACOES values ('data2', 'data', 'data');
INSERT INTO M4T_HIST_CLASSIFICACOES values ('data3', 'data', 'data');
INSERT INTO M4T_HIST_CLASSIFICACOES values ('data4', 'data', 'data');
Isto para que desta forma inserira apenas os inserts na base de dados de produção.

Isto é possivel? Qual será a melhor forma de gerar as linhas de inserts com os dados?


Melhores Cumprimentos,
André Lopes.
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

O TOAD ou o PL/SQL Developer fazem isso...
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Desde já obrigado pela resposta.

E como o fazem? Eu uso o PL/SQL DEVELOPER


Cumprimentos.
stohlirck
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 15
Registrado em: Ter, 09 Out 2007 10:37 am
Localização: Porto Alegre - RS
Tiago Stöhlirck

Usando Pl/Sql Developer você pode exportar os dados inseridos na base de testes.

1 - Va em "Tools -> Export Tables"
2 - Selecione as tabelas que você quer exportar
3 - Clique na aba "SQL inserts"
4 - Selecione as opçoes de acordo com sua necessidade. Se quiser filtar algo pode usar a "Where clause"
5 - Selecione o "Output File" e clique em "Export"

Obs1.: Recomendo setar "0" na opçao "Commit every", assim ele não vai colocar commits no seu script.

Obs2.: Caso as tabelas exportadas possuam campos clob ou blob você tera que usar ou a opção "Oracle Export" ou "Pl/Sql Developer".

Att.
lopes_andre
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Seg, 13 Out 2008 9:01 am
Localização: Lisboa

Desde já obrigado pela ajuda.
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

Selecionar tudo

SELECT 'INSERT INTO M4T_HIST_CLASSIFICACOES values ('||chr(39)||'88'||chr(39)||','
                                                     ||chr(39)||HC.ID_EMPREGAD||chr(39)||','
                                                     ||chr(39)||HC.DAT_INI_ACT_EMP||chr(39)||','
                                                     ||chr(39)||HC.DAT_INICIO||chr(39)||','
                                                     ||chr(39)||HC.DAT_FIM||chr(39)||','
                                                     ||chr(39)||HC.ID_CLASS||chr(39)||','
                                                     ||chr(39)||HC.ID_MOTIVO_ALTER||chr(39)||','
                                                     ||chr(39)||HC.COMENT||chr(39)||','
                                                     ||chr(39)||HC.ID_UTILIZ||chr(39)||','
                                                     ||chr(39)||HC.DATA_ULT_ACTUAL||chr(39)
       ||');' cmd
  FROM m4t_hist_classificacoes HC, 
       m4t_fases_act FA 
 WHERE HC.id_sociedad = '87' 
   AND HC.id_sociedad = FA.id_sociedad 
   AND HC.Id_Empregad = FA.Id_Empregad 
   AND HC.DAT_INI_ACT_EMP = FA.DAT_INI_ACT_EMP 
   AND (FA.dat_said is NULL OR FA.dat_said >= '01-JAN-2009'); 
ricardorauber
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 96
Registrado em: Qua, 21 Jun 2006 11:33 pm
Localização: Canoas RS

o chr(39) gera a aspa e dai tu tira ele quando o campo não for caracter.

outra coisa, de preferência, sempre utiliza um to_date() para comparar campos de data que vai evitar muitos possíveis problemas hehe
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 6 visitantes