2013-03-21 21 views
38

Jak przenieść tabeli z jednej bazy danych do innej bazy danych bez korzystania phpMyAdmin? Będzie lepiej, jeśli będzie to możliwe dzięki PHP.Przenoszenie tabeli z jednej bazy do drugiej w MySQL

+3

[Co próbowałeś?] (Http://whathaveyoutried.com) –

+1

Jeśli znalazłeś odpowiedzi pomocne, nie zapomnij się głos i/lub zaznaczyć poprawne. – Jordan

+1

W jaki sposób to nie jest pytanie? Z pewnością chcę to zrobić (co myślę, że zrobię z eksportem i importem). – Mawg

Odpowiedz

90

ALTER TABLE .. mogą być używane do przenoszenia tabel z jednej bazy do drugiej:

alter table my_old_db.mytable rename my_new_db.mytable 


Ostrzeżenie: jak pytasz, to jest ruch, a nie kopia do nowej bazy danych!
Ale można przechowywać dane z tabeli (a nie ograniczenia integralności, jeśli mają one zastosowanie w danym przypadku)

chodzi php, php jest w stanie uruchomić polecenia SQL, więc nie będzie problemu (mogę być bardziej precyzyjne, jeśli ciebie życzenie).

+1

Powoduje to błąd: BŁĄD 1435 (HY000): Wyzwalanie w złym schemacie –

+1

@lal_bosdi 'Jeśli są jakieś wyzwalacze powiązane z tabelą, która jest przenoszona do innej bazy danych za pomocą RENAME TABLE, wtedy instrukcja nie powiedzie się z błędem Wyzwalacz w błędzie schemat. Klucze obce wskazujące tabelę o zmienionej nazwie nie są automatycznie aktualizowane. W takich przypadkach należy usunąć i ponownie utworzyć kluczy obcych, aby mogły funkcjonować properly.' http://dev.mysql.com/doc/refman/5.7/en/rename-table.html Trzeba tabeli eksportu do sql i zaimportować do nowego db. Lub usuń wszystkie wyzwalacze, przenieś tabelę i utwórz potrzebne wyzwalacze z kopii zapasowej kodu SQL. – Enyby

+0

Wow! To polecenie działa natychmiast w porównaniu do wykonania polecenia "wstaw do" – Nav

14

całej bazy danych (wszystkie tabele)

mysqldump -u root databasename > dump.sql 
mysql -u root databasename < dump.sql 

jednej tabeli:

mysqldump -u root -p yourpass dbname tablename | mysql -u root -p pass secondDB 

PHP

uruchomienie PHP WYBIERZ ŹRÓDŁO-DBTABELA i uruchomić wstawić do tabeli IN TARGET-DB

+0

Uwaga: Wszystkie powyższe polecenia wykonują kopię zamiast przenosić. – Sparkzz

Powiązane problemy