Ostatnio podczas swojej pracy dostałem zadanie skopiowania całych podstron WordPress’a (tzw. stron MultiSite). O ile miałem ciężką przeprawę, żeby go przestawić z Path Install na Domain Install, to jednak to zadanie okazało się łatwiejsze.
Większość babrania się polegała na kopiowaniu tabel (i być może ich zawartości – w zależności od widzimisie użytkownika) – sposób na piechotę oczywiście polegał znajomość struktury tabeli w każdej wersji WordPress i jej tworzeniu, a później wystarczy odpytywać serwer o zawartość, żeby ją wysłać ponownie, w skrócie – nie ma lepszego sposobu by zarżnąć swój serwer.
Na całe szczęście – MySQL ma w swoim standardzie przewidziane te sytuacje.
-
CREATE TABLE new_table LIKE old_table;
Jak widać w tym kodzie nie musimy wiedzieć, jaką strukturę ma stara tabela – Baza Danych sprawdzi to za nas i stworzy odpowiednią kopię.
No, ale jeszcze trzeba przenieść dane.
-
INSERT INTO new_table SELECT * FROM old_table;
Ale o dziwo – wcale nie trzeba rozdzielać tych dwóch procesów – można od razu lecieć z kopyta i zrobić dwie rzeczy na raz
-
CREATE TABLE new_table SELECT * FROM old_table;
I wszystko zostanie wykonane jak za pstryknięciem palcami. Oczywiście wszystkie “modyfikacje” zapytania też mają tu sporo do powiedzenia.
-
CREATE IF NOT EXISTS new_table SELECT new_field=old_field,second_field FROM old_table WHERE thidrd_field=’3′;
Więc jak widać stare porzekadło “Jeżeli chcesz coś zrobić w PHP – zrób to o wiele szybciej w SQL” dalej ma swoje podstawy istnienia.