Criar uma cópia de uma tabela dentro da mesma base de dados DB2

Existe uma maneira fácil de copiar uma tabela para o mesmo banco de dados, claro, com um nome diferente. Eu tentei alguns destes listados abaixo,

db2 "CREATE TABLE SCHEMA.NEW_TB COPY AS SELECT * FROM SCHEMA.OLD_TB WHERE 1 = 2"

db2 "SELECT INTO SCHEMA.NEW_TB FROM SCHEMA.OLD_TB"

db2 "SELECT * FROM SCHEMA.OLD_TB INSERT INTO SCHEMA.NEW_TB"

Nenhum destes funcionou. Estou a usar db2 v9. 5

 29
Author: Govind Kailas, 2012-07-10

5 answers

Você tem que cercar a parte selecionada com parêntesis.

CREATE TABLE SCHEMA.NEW_TB AS (
    SELECT *
    FROM SCHEMA.OLD_TB
) WITH NO DATA

Deve funcionar. Preste atenção a todas as coisas que @Gilbert disse que não seriam copiadas.

Estou a assumir o DB2 no Linux / Unix / Windows, já que diz DB2 v9.5.

 32
Author: bhamby, 2012-07-11 06:26:09

Tenta isto:

CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB;
INSERT INTO SCHEMA.NEW_TB (SELECT * FROM SCHEMA.OLD_TB);

As opções que não são copiadas incluem:

  • restrições de verificação
  • valores por omissão da coluna
  • comentários à coluna
  • chaves estrangeiras
  • opção autenticada e compacta nas colunas BLOB
  • tipos distintos
 30
Author: Gilbert Le Blanc, 2012-07-10 15:47:29

Dois passos funcionam bem:

Criar a tabela bu_x as (seleccione a,b,c,d de x ) sem dados;

Inserir em bu_ x (A,b,C,d) seleccionar a,b,c, d de x;

 3
Author: Maarten, 2014-11-24 10:40:31

Podemos copiar todas as colunas de uma tabela para outra, tabela existente:

Inserir no quadro 2 Seleccionar * da página 1;

Ou podemos copiar apenas as colunas que queremos para outra tabela existente:

Inserir no quadro 2 [column_name (s)] Seleccionar o(s)column_ Nome (s) Do quadro 1;

Ou seleccionar * para o 'BACKUP_TABLE' 1 do TABLE1

 0
Author: Sandeep.Mangalam, 2015-09-10 13:39:35
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;

Funciona para DB2 V 9, 7

 -2
Author: Rbk528, 2014-10-08 13:28:22