marcosvidolin
11/11/2013 - 12:31 PM

Cópia de dados entre duas tabelas

Cópia de dados entre duas tabelas

Este comando efetua a cópia de dados entre duas tabelas dentro de um mesmo banco, ou entre bancos diferentes.
Muito útil para equalizar dados para testes, simulações de erros, etc...

A sintaxe é:
    
    COPY FROM <db> TO <db> <opt> <tbl> {<<cls>>} USING <sel>
    
    Onde:
    <db> : string de banco de dados, ex.: usuário/senha@banco1
    <opc>: Uma das palavras chaves: APPEND, CREATE, INSERT ou REPLACE
    <tbl>:Nome da tabela de destino.
    <cls>:Lista de sinônimos de colunas separadas por virgulas
    <sel>: Qualquer instrução SQL SELECT valida. Lembrando que o resultado deve conter a mesma estrutura da tabela destino.
 
    Descrição das palavras chaves.
    · CREATE – se o nome de destino já existir, uma mensagem de erros sera exibida.
    · REPLACE – se a tabela de destino já existir ela será "dropada" e criada novamente e os dados serão copiados.
    · INSERT – Se a tabela de destino existir, os dados serão copiados.
    · APPEND – Realiza o Insert em uma tabela que já contém dados.

Exemplo:
SQL> COPY FROM usuario/senha@BANCO1 TO usuario/senha@BANCO2 CREATE TABELA_DESTINO USING SELECT * FROM TABELA_ORIGEM ;
 
Vale ressaltar que podemos fazer isso para o mesmo banco de dados, no caso da tabela conter campo LONG essa é uma boa opção.

Estes comando é rodado através de uma Command Window ou através do sql*plus.