2012-10-01 9 views
7

Dużo googlowałem i nie mogę nic na ten temat znaleźć!Jak zaimportować zrzut MySQL z wiersza poleceń Z nadpisaniem

[[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 

z mysql -f jest taki sam. Chciałbym po prostu zaimportować .sql i przepisać te tabele, czy ktoś może mi pomóc?

p.s. Wiem, że podczas eksportowania bazy danych możesz wybrać opcję "DROP TABLE", ale jeśli mam kopię zapasową, bez tej deklaracji? jak mogę wymusić? Dzięki

Odpowiedz

3

Czy próbujesz zastąpić całą bazę danych? Jeśli tak, możesz ręcznie usunąć wszystkie tabele, a następnie uruchomić skrypt importu. Jest to łatwe do zrobienia w phpmyadmin. Jeśli korzystasz z interfejsu CLI, najszybszym sposobem będzie użycie DROP DATABASE databasename, a następnie create database, choć wydaje mi się, że będziesz musiał ponownie nadać uprawnienia użytkownikom nie będącym administratorami.

Inną opcją byłoby otwarcie pliku zrzutu i dodanie DROP TABLE tablename przed każdym poleceniem CREATE TABLE. Prawdopodobnie możesz to zrobić z łatwością za pomocą sprytnego wyrażenia regularnego.

+0

Cześć! Nie, chcę zastąpić TYLKO tabele zawarte w tables.sql (w tym .sql wyeksportowałem 6 tabel, więc chcę je tylko zastąpić), czy jest to możliwe z logicznego punktu widzenia, czy może czegoś brakuje? – ienabellamy

+1

Następnie użyj mojej drugiej sugestii i dodaj polecenie DROP TABLE dla każdego polecenia CREATE TABLE w tables.sql. Możesz napisać skrypt powłoki, aby to zrobić, ale jeśli jest tylko 6 tabel, powinieneś być w stanie zrobić to ręcznie w mniej niż minutę. – octern

+0

dzięki za cynk. Do zobaczenia ;-) – ienabellamy

-2

Zaproponowałbym opcję -add-drop-table.

21

Kiedy robisz mysqldump dodaj --add-drop-table (jak wspomniany twihoX). Następnie importuj jak zwykle. Więc coś takiego:

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

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

Dlaczego ocena końcowa? – DrewB

+0

Przepraszamy za nie komentowanie, ale jest na odwrót. nie mysql ...> dumpfile.sql. Tak więc komendami będą mysqldump --add-drop-table -u użytkownik -p> dumpfile.sql, a następnie mysql -u użytkownik -p WoodyDRN

+0

Dobry połów. Naprawiłem błąd. – DrewB

Powiązane problemy