2012-10-01 17 views
7

¡busqué en Google y no encuentro nada al respecto!Cómo importar un volcado de MySQL desde la línea de comando CON sobreescribir

[[email protected] backups]# mysql -u username_1 -p db_1 < tables_to_import/tables.sql 
ERROR 1050 (42S01) at line 19: Table 'ps_customer' already exists 

con mysql -f es el mismo. Deseo simplemente importar ese .sql y volver a escribir esas tablas, ¿alguien puede ayudarme?

p.s. Sé que cuando exporta un archivo db, puede elegir la opción "DROP TABLE", pero si tengo una copia de seguridad, ¿sin esta declaración? ¿Cómo puedo forzar? Gracias

Respuesta

3

¿Está intentando sobrescribir la totalidad de la base de datos? De ser así, puede soltar manualmente todas las tablas y luego ejecutar su secuencia de comandos de importación. Esto es fácil de hacer en phpmyadmin. Si está utilizando la CLI, la forma más rápida sería usar DROP DATABASE databasename y luego create database, aunque creo que tendrá que volver a otorgar privilegios para los usuarios que no sean root.

Otra opción sería abrir su archivo de volcado y agregar DROP TABLE tablename antes de cada uno de los comandos CREATE TABLE. Probablemente puedas hacer esto fácilmente con algunos regex inteligentes.

+0

Hi octern! No, deseo sobrescribir SÓLO las tablas contenidas en tables.sql (en este .sql exporté 6 tablas, por lo que deseo sobrescribir solo estas), ¿es posible desde un punto de vista lógico o tal vez me falta algo? – ienabellamy

+1

Luego use mi segunda sugerencia y agregue un comando DROP TABLE para cada comando CREATE TABLE en tables.sql. Podría escribir un script de shell para hacer esto, pero si solo hay 6 tablas, debería poder hacerlo a mano en menos de un minuto. – octern

+0

gracias por el consejo octem. Nos vemos ;-) – ienabellamy

-2

Sugeriría la opción --add-drop-table.

21

Cuando lo haga mysqldump agregue --add-drop-table (como twihoX mencionado). Luego, realice su importación como de costumbre. Así que algo como:

mysqldump --add-drop-table -u user -p > dumpfile.sql 

mysql -u user -p < dumpfile.sql 
+0

¿Por qué la calificación negativa? – DrewB

+0

Perdón por no comentar, pero es al revés. no mysql ...> dumpfile.sql. Entonces los comandos serían mysqldump --add-drop-table -u user -p> dumpfile.sql y luego mysql -u user -p WoodyDRN

+0

Buena captura. He arreglado el error. – DrewB

Cuestiones relacionadas