2012-01-18 9 views
5

que recientemente decidió cambiar la empresa a través del cual me sale mi alojamiento, por lo que cambiar mi edad db en mi nueva db, he estado tratando de ejecutar este:mysqldump base de datos parcial

mysqldump --host=ipaddress --user=username --password=password db_name table_name | mysql -u username -ppassword -h new_url new_db_name 

y esto parecía estaré trabajando bien ... pero como mi base de datos es tan voluminosa masiva, obtendría errores de tiempo de espera en medio de mis tablas. Entonces me preguntaba si había alguna manera fácil de hacer un mysqldump en solo una parte de mi mesa.

que podría suponer el flujo de trabajo se verá algo como esto:

create temp_table 
move rows from old_table where id>2,500,000 into temp_table 
some how dump the temp table into the new db's table (which has the same name as old_table) 

pero no estoy muy seguro de cómo hacer esos pasos.

+0

No estoy seguro si solucionará su problema, pero consulte la opción '--quick' en http://dev.mysql.com/doc/refman/5.5/en/mysqldump.html. Dice que es útil para tablas grandes. –

Respuesta

5

Agregue --where="id>2500000" al final del comando mysqldump. MySQL 5.1 Reference Manual

En su caso el comando mysqldump se vería

mysqldump --host=ipaddress \ 
    --user=username \ 
    --password=password \ 
    db_name table_name \ 
    --where="id>2500000 

si vuelca dos veces. El segundo volcado contendrá información de creación de tabla. Pero la próxima vez solo quiere agregar las nuevas filas. Por lo tanto, para el segundo vuelco, agregue la opción --no-create-info en la línea de comando mysqldump.

+0

como resultado, este comando realmente reemplazó mi tabla con las filas donde "id> 2500000". así que lo que terminé haciendo fue moverlos a todos a una nueva mesa, y fusionar las dos tablas con [esta publicación] (http://stackoverflow.com/questions/725556/how-can-i-merge-two-mysql- tablas) – BananaNeil

+0

@BananaNeil Puede suceder si ambos volcados contienen Para volcar solo los datos por segunda vez, agregue la opción '--no-create-info' en la línea de comandos de mysql. –

2

He desarrollado una herramienta para este trabajo. Se llama mysqlsuperdump y se puede encontrar aquí:

https://github.com/hgfischer/mysqlsuperdump

con ella se puede speciffy la cláusula completa "WHERE" para cada tabla, por lo que es posible especificar reglas diferentes para cada tabla.

También puede reemplazar los valores de cada columna por cada tabla en el volcado. Esto es útil, por ejemplo, cuando quiere exportar un volcado de base de datos para usar en un entorno de desarrollo.

Cuestiones relacionadas