W zasadzie mam bazę danych joomla w MySQL, która ma kilka tabel z prefiksem "jmla_". Chciałbym zmienić nazwę wszystkich tych tabel, zastępując prefiks "jmla_" prefiksem "jos_". Wszelkie pomysły na temat tego, jak to zrobić za pomocą prostego skryptu SQL lub zapytania SQL?W MySQL, jak mogę wsadowo zmieniać nazwy tabel w bazie danych?
Odpowiedz
- Export użyciu phpMyAdmin do pliku .sql
- użyć dowolnego edytora tekstu (wolę vim, praca doskonała na dużych plikach) z funkcji „znajdź i zastąp” w celu otwarcia pliku
- Czy „znajdź i zastąp” , umieszczając swój aktualny prefiks w polu wyszukiwania i zaktualizowany w polu zamień
- Zaimportuj plik za pomocą phpmyadmin.
Pamiętaj o usunięciu starej bazy danych przed zaimportowaniem przez phpmyadmin. Można to zrobić, sprawdzając odpowiednie opcje podczas eksportu.
RENAME TABLE jmla_whatever to jos_whatever;
Musisz napisać skrypt, aby pokryć wszystkie tabele - można wypełnić swój skrypt z wyjściem show tables
. Aby uzyskać szczegółowe informacje, patrz: http://dev.mysql.com/doc/refman/5.0/en/rename-table.html.
Run to stwierdzenie:
SELECT 'rename table '||table_name||' to '||'jos'||substr(table_name,5)||';'
FROM information_schema.tables
WHERE table_name like 'jmla%'
Stwarza to skrypt, który będzie zmienić wszystkie tabele. Wystarczy skopiować & wkleić dane wyjściowe do klienta SQL.
(Trzeba będzie zmienić ||
do niestandardowych operatora konkatenacji MySQL w przypadku, gdy nie jest uruchomiony w trybie ANSI)
Upewnij się, że filtrujesz również bazę danych, której chcesz użyć, w przeciwnym razie spowoduje to wygenerowanie zapytań RENAME we wszystkich bazach danych, w tym w innych instalacjach Joomla: 'AND TABLE_SCHEMA = 'your_joomla_db'' – Fanis
SELECT concat ('rename table ',table_name,' to ',table_name,'_old;')
FROM information_schema.tables
WHERE table_name like 'webform%'
and table_schema='weiss_db_new'
zadziała.
Czy rozważałeś użycie komponentu Akeeba Admin Tools dla Joomla! a następnie użycie Edytora prefiksów bazy danych do zmiany prefiksów tabel działa bardzo dobrze. Narzędzia administratora Akeeba mogą być użyte do zabezpieczenia twojej Joomla! instalacja
Akeeba można uzyskać here
i co się dzieje, gdy jedna z nazw rzędów ma „jmla_” w nim? Albo gorzej, jeśli dane tam gdzieś tam są? –
1. Nigdy nie widziałem tej sprawy w praktyce 2. Moje rozwiązanie stało się kolejną dobrą rzeczą, zmieniając punkt na nieistniejącą bazę danych. –
Chodzi o to, że gdy istnieje lepsze rozwiązanie, nie warto ryzykować prostego znalezienia i zamiany. Rozwiązanie może prowadzić do problemów trudnych do debugowania w przyszłości. –