Pessoal tenho uma tabela e gostaria de gerar atraves do sqlplus um script com os dados contidos nesta tabela.
alguém poderia me ajudar?
At,
Anderson A Silva
criar scipt de insert
-
- Rank: Programador Pleno
- Mensagens: 35
- Registrado em: Sex, 20 Abr 2012 10:51 am
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Olá Anderson,
Eu encontrei o script abaixo, desenvolvido pelo forista HTM no site do ASKTOM (http://asktom.oracle.com/pls/asktom/f?p ... 0346294209).
Trata-se de um script básico, com os tipos mais comuns do ORACLE. A saída gerada por ele é feita via DBMS_OUTPUT, o que significa que existe um limite para a quantidade de linhas geradas pelo bloco PL/SQL.
Este script pode ser incrementado, agregando-se novos tipos ou gerando o output em um arquivo TEXTO ou TABELA TEMPORÁRIA.
Mas veja bem: Esta solução só será adequada se você deseja gerar scripts com pouca linhas de carga, e com colunas de pouca quantidade de caracteres. Existem outras formas mais rápidas e seguras de carga de tabelas, como SQL*LOADER, EXP/IMP, etc.
Fora o script acima, existe uma série de ferramentas tipo PL/SQL Developer, TOAD ou EMBARCADERO ou SQLDEVELOPER que permitem a geração de scripts SQL.
Abraços e boa sorte,
Sergio Coutinho
Eu encontrei o script abaixo, desenvolvido pelo forista HTM no site do ASKTOM (http://asktom.oracle.com/pls/asktom/f?p ... 0346294209).
set serveroutput on size 100000
set feedback off
declare
v_table_name varchar2(30) := 'EMP'; -- Your Tablename
v_column_list varchar2(2000);
v_insert_list varchar2(2000);
v_ref_cur_columns varchar2(4000);
v_ref_cur_query varchar2(2000);
v_ref_cur_output varchar2(2000);
v_column_name varchar2(2000);
cursor c1 is select column_name, data_type from user_tab_columns where table_name = v_table_name
order by column_id;
refcur sys_refcursor;
begin
for i in c1 loop
v_column_list := v_column_list||','||i.column_name;
if i.data_type = 'NUMBER' then
v_column_name := i.column_name;
elsif i.data_type = 'DATE' then
v_column_name :=
chr(39)||'to_date('||chr(39)||'||chr(39)'||'||to_char('||i.column_name||','||chr(39)||'dd/mm/yyyy
hh:mi:ss'||chr(39)||')||chr(39)||'||chr(39)||', '||chr(39)||'||chr(39)||'||chr(39)||'dd/mm/rrrr
hh:mi:ss'||chr(39)||'||chr(39)||'||chr(39)||')'||chr(39);
elsif i.data_type = 'VARCHAR2' then
v_column_name := 'chr(39)||'||i.column_name||'||chr(39)';
end if;
v_ref_cur_columns := v_ref_cur_columns||'||'||chr(39)||','||chr(39)||'||'||v_column_name;
end loop;
v_column_list := ltrim(v_column_list,',');
v_ref_cur_columns := substr(v_ref_cur_columns,8);
v_insert_list := 'INSERT INTO '||v_table_name||' ('||v_column_list||') VALUES ';
v_ref_cur_query := 'SELECT '||v_ref_cur_columns||' FROM '||v_table_name;
open refcur for v_ref_cur_query;
loop
fetch refcur into v_ref_cur_output;
exit when refcur%notfound;
v_ref_cur_output := '('||v_ref_cur_output||');';
v_ref_cur_output := replace(v_ref_cur_output,',,',',null,');
v_ref_cur_output := replace(v_ref_cur_output,'(,','(null,');
v_ref_cur_output := replace(v_ref_cur_output,',,)',',null)');
v_ref_cur_output := replace(v_ref_cur_output,'null,)','null,null)');
v_ref_cur_output := v_insert_list||v_ref_cur_output;
dbms_output.put_line (v_ref_cur_output);
end loop;
end;
/
Este script pode ser incrementado, agregando-se novos tipos ou gerando o output em um arquivo TEXTO ou TABELA TEMPORÁRIA.
Mas veja bem: Esta solução só será adequada se você deseja gerar scripts com pouca linhas de carga, e com colunas de pouca quantidade de caracteres. Existem outras formas mais rápidas e seguras de carga de tabelas, como SQL*LOADER, EXP/IMP, etc.
Fora o script acima, existe uma série de ferramentas tipo PL/SQL Developer, TOAD ou EMBARCADERO ou SQLDEVELOPER que permitem a geração de scripts SQL.
Abraços e boa sorte,
Sergio Coutinho
-
- Rank: Programador Pleno
- Mensagens: 35
- Registrado em: Sex, 20 Abr 2012 10:51 am
Obrigado STCoutinho!!!
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes