2012-10-01 4 views
7

ho cercato su Google molto e non riesco a trovare nulla!Come importare un dump MySQL dalla riga di comando con sovrascrittura

[[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 è lo stesso. Vorrei semplicemente importare quel file .sql e riscrivere quelle tabelle, qualcuno può aiutarmi?

p.s. so che esportando un db puoi scegliere l'opzione "DROP TABLE" ma se ho un backup, senza questa dichiarazione? come posso forzare? Grazie

risposta

3

Stai cercando di sovrascrivere l'intero database? In tal caso, puoi rilasciare manualmente tutte le tabelle e quindi eseguire lo script di importazione. Questo è facile da fare in phpmyadmin. Se stai utilizzando la CLI, il modo più veloce sarebbe utilizzare DROP DATABASE databasename e poi create database, anche se penso che dovresti quindi ridigitare i privilegi per qualsiasi utente non root.

Un'altra opzione sarebbe aprire il file di dettagli e aggiungere DROP TABLE tablename prima di ciascuno dei comandi CREATE TABLE. Probabilmente potresti farlo facilmente con una regex intelligente.

+0

Ciao ore! No, desidero sovrascrivere SOLO le tabelle contenute in tables.sql (in questo .sql ho esportato 6 tabelle, quindi desidero sovrascrivere solo queste), è possibile da un punto di vista logico o forse mi manca qualcosa? – ienabellamy

+1

Quindi utilizzare il secondo suggerimento e aggiungere un comando DROP TABLE per ogni comando CREATE TABLE in tables.sql. Potresti scrivere uno script di shell per farlo, ma se ci sono solo 6 tabelle, dovresti essere in grado di farlo a mano in meno di un minuto. – octern

+0

grazie per l'octem di punta. Ci vediamo ;-) – ienabellamy

-2

Suggerisco l'opzione --add-drop-table.

21

Quando si esegue mysqldump, aggiungere --add-drop-table (come menzionato da twihoX). Quindi importa come al solito. Quindi qualcosa come:

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

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

Perché il rating negativo? – DrewB

+0

Ci scusiamo per non aver commentato, ma è il contrario. non mysql ...> dumpfile.sql. Quindi i comandi sarebbero mysqldump --add-drop-table -u utente -p> dumpfile.sql e quindi mysql -u utente -p WoodyDRN

+0

Buona cattura. Ho corretto l'errore. – DrewB

Problemi correlati