copy - para - Crear una copia de una tabla dentro de la misma base de datos DB2
hashtag ranking (5)
Dos pasos funcionan bien:
cree la tabla bu_x como (seleccione a, b, c, d desde x) SIN datos;
inserte en bu_x (a, b, c, d) seleccione seleccione a, b, c, d de x;
¿Existe una manera fácil de copiar una tabla a la misma base de datos, por supuesto, con un nombre diferente? Probé algunos de estos enumerados a continuación,
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"
Ninguno de estos funcionó. Estoy usando db2 v9.5.
Podemos copiar todas las columnas de una tabla a otra, tabla existente:
Insertar en la tabla 2 SELECCIONA * DE la tabla 1;
O podemos copiar solo las columnas que queremos en otra tabla existente:
INSERT INTO table2 (column_name (s)) SELECT column_name (s) FROM table1;
o SELECCIONE * EN BACKUP_TABLE1 DESDE LA TABLA1
Prueba esto:
CREATE TABLE SCHEMA.NEW_TB LIKE SCHEMA.OLD_TB;
INSERT INTO SCHEMA.NEW_TB (SELECT * FROM SCHEMA.OLD_TB);
Las opciones que no se copian incluyen:
- Comprobar restricciones
- Valores por defecto de la columna
- Columna de comentarios
- Llaves extranjeras
- Opción registrada y compacta en columnas BLOB
- Tipos distintos
Tienes que rodear la parte seleccionada con paréntesis.
CREATE TABLE SCHEMA.NEW_TB AS (
SELECT *
FROM SCHEMA.OLD_TB
) WITH NO DATA
Deberia trabajar. Presta atención a todas las cosas que @Gilbert dijo que no se copiarían.
Estoy asumiendo DB2 en Linux / Unix / Windows aquí, ya que dices DB2 v9.5.
CREATE TABLE NEW_TABLENAME LIKE OLD_TABLENAME;
Trabaja para DB2 V 9.7