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"
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.
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
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;
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
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;
Funciona para DB2 V 9, 7