2012-01-06 8 views
92

Voglio copiare lo schema di una tabella così come i dati all'interno di quella tabella in un'altra tabella di database in un altro database su un server attivo. Come potrei farlo?Voglio copiare la tabella contenuta da un database e inserirla in un'altra tabella di database

+0

utilizzare due d connessioni atabase e leggere la struttura della tabella da uno ed eseguire quella query in altri – Dau

+0

Questi database sono istanze separate di mysql o lo stesso? Istanze diverse possono essere configurate con la replica se si tratta di un processo continuo. – Nick

+0

ho la soluzione thanx :) – user1031092

risposta

218

Se si desidera copiare una tabella da un database a un altro database, è sufficiente effettuare le operazioni riportate di seguito.

CREATE TABLE db2.table LIKE db1.table; 
INSERT INTO db2.table SELECT * FROM db1.table; 
+4

uno dei trucchi più intelligenti che abbia mai trovato. – MatteoSp

+2

Ottima soluzione se la tabella non ha vincoli di chiave esterna. L'ho usato per fare una copia di un intero database invece di una sola tabella. Per questo consiglio di usare il comando mysqldump. – thorne51

+0

MySQL ora può memorizzare i dati della tabella in singoli file (e anche i file frm sono troppo per tabella). Questo approccio sarebbe senza dubbio funzionante, ma con enormi database è lento. C'è un altro modo, forse? –

9

o semplicemente CREATE TABLE db2.table SELECT * FROM db1.table in MySQL 5

+4

Questo non copia cose come indice. Crea semplicemente una tabella basata su una serie di tuple. Probabilmente non vuoi farlo. – BenMQ

+0

Sì questa query non copia indexe – XxXk5XxX

1

semplicemente usare -

CREATE TABLE DB2.newtablename SELECT * FROM DB1.existingtablename;

2

CREATE TABLE db2.table_new AS SELECT * FROM db1.table_old

2

Se si desidera solo Struttura da copiare semplicemente utilizzare

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> schema che non copierà e dati

1

In BASH si può fare:

mysqldump database_1 table | mysql database_2 
Problemi correlati