una tablas tabla registros pasar otra migrar guardar estructura entre datos copiar con como mysql database data-migration mysql-connector

mysql - tablas - copiar una tabla a otra base de datos postgresql



¿Cómo puedo transferir datos entre 2 bases de datos MySQL? (5)

Quiero hacerlo usando un código y no usando una herramienta como "MySQL Migration Toolkit". La forma más fácil que conozco es abrir una conexión (utilizando conectores MySQL) a DB1 y leer sus datos. Abra la conexión a DB2 y escriba los datos en ella. ¿Hay alguna forma mejor / más fácil?


¿El motor de almacenamiento FEDERADO? No es el más rápido en el grupo, pero por una vez, lo que sea posible será una pequeña cantidad de datos. Eso es asumiendo que estás hablando de 2 SERVIDORES. Con 2 bases de datos en un mismo servidor, simplemente será:

INSERT INTO databasename1.tablename SELECT * FROM databasename2.tablename;


Primero, asumiré que no está en condiciones de copiar los datos / directorio, porque si está utilizando su instantánea / copia de seguridad / restauración probablemente será suficiente (y pruebe sus procedimientos de copia de seguridad / restauración en la negociación) .

En cuyo caso, si las dos tablas tienen la misma estructura, generalmente la más rápida, e irónicamente, el enfoque más sencillo será utilizar SELECT ... INTO OUTFILE ... en un extremo y LOAD DATA INFILE ... en el otro.

Consulte http://dev.mysql.com/doc/refman/5.1/en/load-data.html y ... / select.html para obtener detalles definitivos.

Para tablas triviales funcionará lo siguiente:

SELECT * FROM mytable INTO OUTFILE ''/tmp/mytable.csv'' FIELDS TERMINATED BY '','' OPTIONALLY ENCLOSED BY ''"'' ESCAPED BY ''////' LINES TERMINATED BY ''//n'' ; LOAD DATA INFILE ''/tmp/mytable.csv'' INTO TABLE mytable FIELDS TERMINATED BY '','' OPTIONALLY ENCLOSED BY ''"'' ESCAPED BY ''////' LINES TERMINATED BY ''//n'' ;

También hemos utilizado los FIFO con gran efecto para evitar la sobrecarga de la escritura en el disco, o si necesitamos escribir en el disco por algún motivo, para canalizarlo a través de gzip.

es decir.

mkfifo /tmp/myfifo gzip -c /tmp/myfifo > /tmp/mytable.csv.gz & ... SEL ECT... INTO OUTFILE ''/tmp/myfifo'' ..... wait gunzip -c /tmp/mytable.csv.gz > /tmp/myfifo & ... LOAD DATA INFILE /tmp/myfifo ..... wait

Básicamente, una vez que dirija los datos de la tabla a un FIFO, puede comprimirlos, mezclarlos o canalizarlos a través de una red hasta el contenido de su corazón.


Puede usar mysqldump y mysql (el cliente de línea de comandos). Estas son herramientas de línea de comandos y en la pregunta que escribes no quieres usarlas, pero seguir usándolas (incluso ejecutándolas desde tu código) es la forma más fácil; mysqldump resuelve muchos problemas.

Puedes hacer select desde una base de datos e insert en la otra, lo cual es bastante fácil. Pero si también necesita transferir el esquema de la base de datos ( create table , etc.), se vuelve un poco más complicado, por lo que recomiendo mysqldump . Pero muchas de las herramientas de administración de PHP-MySQL también lo hacen, por lo que puede usarlas o mirar su código.

O tal vez puede utilizar la replicación de MySQL.


Si habilitó el registro binario en su servidor actual (y tiene todos los registros de bin), puede configurar la replicación para el segundo servidor