2010-08-01 29 views
8

¿Cómo creo una tabla usando datos que ya están presentes en otra tabla (copia de la tabla)?Crear tabla SQL con los datos de otra tabla

+6

¿Qué RDBMS? No hay una forma estándar. –

+0

Supongo que tiene los datos.No estoy seguro de si tiene acceso a los metadatos para copiar la estructura de la tabla o si desea inferir la estructura de la tabla a partir de una muestra de contenido. Además, no se define qué base de datos utiliza. – profimedica

Respuesta

11

Si está utilizando MySQL, es posible que desee utilizar la sintaxis CREATE TABLE ... AS SELECT para crear una tabla definida por las columnas y tipos de datos de otro conjunto de resultados:

CREATE TABLE new_table AS 
SELECT * 
FROM old_table; 

Ejemplo:

CREATE TABLE old_table (id int, value int); 

INSERT INTO old_table VALUES (1, 100), (2, 200), (3, 300), (4, 400); 

CREATE TABLE new_table AS 
SELECT * 
FROM old_table; 


SELECT * FROM new_table; 
+------+-------+ 
| id | value | 
+------+-------+ 
| 1 | 100 | 
| 2 | 200 | 
| 3 | 300 | 
| 4 | 400 | 
+------+-------+ 
4 rows in set (0.00 sec) 


DESCRIBE new_table; 
+-------+---------+------+-----+---------+-------+ 
| Field | Type | Null | Key | Default | Extra | 
+-------+---------+------+-----+---------+-------+ 
| id | int(11) | YES |  | NULL |  | 
| value | int(11) | YES |  | NULL |  | 
+-------+---------+------+-----+---------+-------+ 
2 rows in set (0.03 sec) 

Para otros DBMS, que no son compatibles con esta sintaxis, es posible que desee comprobar @OMG Ponies' answer para una solución más portátil.

+0

Muchas gracias – Renuka

+2

@Renuka: Si te gusta una respuesta, considera votar usando las flechas a la izquierda. Puedes "aceptar" la respuesta que más te guste usando el verde V. – Andomar

+1

@DanielVassallo ¿Qué pasa si la tabla fuente está presente en otra base de datos? También hice una pregunta similar pero con un uso diferente - http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and -vic – devsda

4

Para SQL Server

SELECT * 
INTO NewTable 
FROM OldTable 
+0

¿Qué pasa si OldTable está presente en otra base de datos? ¿Puede contestar esta pregunta - http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and-vic – devsda

14

los medios más portátiles de la copia de una tabla es:

  1. crear la nueva tabla con un comando CREATE TABLE
  2. usar inserto basado en un SELECT de la tabla anterior:

    INSERT INTO new_table 
    SELECT * FROM old_table 
    

En SQL Server, que haría uso de la sintaxis EN:

SELECT * 
    INTO new_table 
    FROM old_table 

... porque en SQL Server, la cláusula INTO crea una tabla que no exista ya.

+0

Excelente respuesta –

0

Para el servidor SQL:

Crear nueva tabla de tabla existente:

CREATE TABLE new_table_name AS 
SELECT [col1,col2,...coln] FROM existing_table_name [WHERE condition]; 

valores Insertar en la tabla existente forman otra tabla existente utilizando Seleccionar comando:

SELECT * INTO destination_table FROM source_table [WHERE conditions]; 

SELECT * 
INTO newtable [IN externaldb] 
FROM oldtable 
[ WHERE condition ]; 

Inserte valores en la tabla existente de otra tabla existente usando Insertar comando:

INSERT INTO table2 (column1, column2, column3, ...) 
SELECT column1,column2, column3, ... FROM table1 [WHERE condition]; 
+0

La transferencia de datos es buena, pero creo que Renuka también necesita la estructura de la tabla. – profimedica

+0

esquema exacto de la tabla existente a la nueva tabla: create table new_table_name like Old_table_name; –

+0

https://stackoverflow.com/a/44972381/8227002 –

0

si quieres esquema exacto de tabla existente a la nueva tabla y todos los valores de la tabla existente quieren insertarse en la nueva tabla a continuación, ejecutar a continuación dos consultas:

create table new_table_name like Old_table_name; 

select * into new_table_name from Old_table_name; 

COMO funciona solo para tablas base, no para vistas.

Si la tabla original es una tabla TEMPORAL, CREATE TABLE ... LIKE no conserva TEMPORARY. Para crear una tabla de destino TEMPORAL, use CREATE TEMPORARY TABLE ... LIKE.

for more details click here

Cuestiones relacionadas