2010-08-01 11 views
8

Come si crea una tabella utilizzando dati già presenti in un'altra tabella (copia della tabella)?Crea tabella SQL con i dati di un'altra tabella

+6

Che tipo di RDBMS? Non c'è un modo standard. –

+0

Suppongo che tu abbia i dati.Non sei sicuro se hai accesso ai metadati per copiare la struttura della tabella o vuoi dedurre la struttura della tabella da un campione di contenuti. Inoltre, non è definito quale database si utilizza. – profimedica

risposta

11

Se si sta utilizzando MySQL, si consiglia di utilizzare la sintassi CREATE TABLE ... AS SELECT per creare una tabella definita dalle colonne ei tipi di dati di un altro set di risultati:

CREATE TABLE new_table AS 
SELECT * 
FROM old_table; 

Esempio:

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) 

Per altri DBMS, che non supportano questa sintassi, è possibile controllare @OMG Ponies' answer per una soluzione più portabile.

+0

Grazie mille – Renuka

+2

@Renuka: Se ti piace una risposta, valuta di votarla usando le frecce a sinistra. Puoi "accettare" la risposta che più ti piace utilizzando il verde V. – Andomar

+1

@DanielVassallo Cosa succede se la tabella di origine è presente in un altro database? Ho anche fatto una domanda simile ma con un altro caso d'uso - http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and -vic – devsda

4

Per SQL Server

SELECT * 
INTO NewTable 
FROM OldTable 
+0

Cosa succede se OldTable è presente in un altro database? Puoi rispondere a questa domanda: http://stackoverflow.com/questions/38351206/how-to-create-table-structure-in-rds-similar-to-source-table-in-redshift-and-vic – devsda

14

La maggior parte dei mezzi portatili di copiare una tabella è quello di:

  1. Creare la nuova tabella con un'istruzione CREATE TABLE
  2. usa inserto sulla base di un SELECT dal vecchio tavolo:

    INSERT INTO new_table 
    SELECT * FROM old_table 
    

In SQL Server, userei l'INTO sintassi:

SELECT * 
    INTO new_table 
    FROM old_table 

... perché in SQL Server, la clausola INTO crea una tabella che non esiste già.

+0

Ottima risposta –

0

per SQL Server:

Crea nuova tabella dalla tabella esistente:

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

valori inserire dati nella tabella esistente formano un'altra tabella esistente utilizzando Seleziona comando:

SELECT * INTO destination_table FROM source_table [WHERE conditions]; 

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

valori Inserire nella tabella esistente formare un'altra tabella esistente utilizzando Inserisci comando:

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

Il trasferimento dei dati è buono ma penso che Renuka abbia anche bisogno della struttura della tabella. – profimedica

+0

schema esatto della tabella esistente nella nuova tabella: crea una tabella new_table_name come Old_table_name; –

+0

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

0

se volete esatto schema della tabella esistente per nuova tabella e tutti i valori della tabella esistente vogliono essere inseriti nella nuova tabella quindi eseguire di seguito due query:

create table new_table_name like Old_table_name; 

select * into new_table_name from Old_table_name; 

LIKE funziona solo per le tabelle di base, non per le viste.

Se la tabella originale è una tabella TEMPORANEA, CREATE TABLE ... LIKE non conserva TEMPORARY. Per creare una tabella di destinazione TEMPORARY, utilizzare CREATE TABLE TEMPORARY ... LIKE.

for more details click here

Problemi correlati