PDA

Zobacz pełną wersję : skopiowanie zawartosci tabel DB z jednego serwera na drugi



coliberek1
23-04-2010, 22:49
Chcialabym zapytac o techniczną stronę wykonania następujacej sztuczki.
Mam stronę na starym serwerze z duzą iloscią artykulów , nową wersję strony zainstalowalam na nowym serwerze , juz calosc jest skonfigurowana i ma trochę tresci + komponent zewnętrzny do obslugi biura podróży.

Jednak teraz doszlam do wniosku , ze jednak pomimo zawartosci ofert wyjazdów z komponentu, chcialabym przeniesc tresc ze starej strony na tą nową ( głównie w sprawie pozycjonowania na nazwy hoteli itd )

Zdaję sobei sprawę że należy skopiować "zawartosc" tabel: jos_categories, jos_sections i jos_content zeby wszystko mialo rece i nogi. W phpmyadminie, zeby nie pojawil się bląd ze dana tabela już istnieje na nowym serwerze ( np.jos_sections ) weszlam w przegląd tej tabeli, zaznaczylam wszystkie sekcje i wykonalam import pliku sql. Jednak przy próbie zaimportowania tego na testowym serwerze i tak krzyczy ze ta tabela już istnieje - czyli wyeksportowala się cała tabela.

Pytanie wiec , jak to by można bylo zrobic zeby się tylko wnetrze(zawartosc) tabeli skopiowalo a nie cala tabela?
Nie chcę nadpisac ani wyrzucić aktualnej tabeli - ponieważ już są porobione nowe sekcje.

Chcialabym tylko dodać te stare, tak samo kategorie no i najwazniejsze - content.

...
Pozdrawiam
Gosia

alex51
24-04-2010, 07:33
Zwróć uwagę, że nie potrzebujesz importować do nowej bazy całych tabel ze starej bazy, tylko należałoby dodać zawartość, czyli konkretne rekordy. Najprościej możesz to zrobić eksportując tabele jos_categories, jos_sections i jos_content z obu baz danych a następnie stosując np. Notatnik SP (choć lepszy byłby EditPadPro, bo daje możliwość porównania zawartości) możesz wybrać brakujące rekordy z jednej tabeli i wkleić je do drugiej. Prościej oczywiście byłoby skopiować z tabel, w których jest mniejsza ilość rekordów, czyli pewnie mniej jest w nowej bazie, stąd łatwiej z niej skopiować te rekordy i wkleić je do starych tabel, gdzie tych rekordów jest pewnie sporo więcej. Tak spreparowane tabele, powiększone o dodatkowe rekordy można zapisać i zaimportować do bazy danych. Przed importem lepiej jest usunąć znajdujące się w bazie tabele, które mamy zamiar zmienić na te nowo utworzone, aby uniknąć błędu.

ekumi
24-04-2010, 11:55
Ja bym utworzył nową bazę tymczasową i do niej skopiował tabele, których zawartośc chcesz przenieść. Potem napisałbym skrypt, który pobiera z tych tabel po kolei wiersz po wierszu i dopisuje do ich odpowiedników w bazie docelowej.

coliberek1
24-04-2010, 12:18
Uuff - dzień możemy zaliczyć do udanych. :) Przenosiny zakończyły się sukcesem. Zrobiłam dokładnie tak jak poradził @alex51 ( BARDZO DZIĘKUJĘ ZA PODPOWIEDŹ ) , tylko oczywiscie najpierw przetestowalam sprawę na serwerze testowym , ktory jest do wyczyszczenia.

Również bardzo dziękuję również @ekumi , ale jednak narazie to zbyt wysokie progi dla mnie , zeby napisac skrypcik pobierający dane...ale kto wie, kto wie, cały czas sie przeciez kazdy uczy :) :)

Pozdrawiam serdecznie
Gosia

alex51
24-04-2010, 12:31
Dziękuję i również pozdrawiam tak sympatycznego @koliberka. Dodam, że swoją wskazówkę starałem się dostosować do średniego stopnia zaawansowania użytkownika, stąd język niekoniecznie fachowy, acz skuteczny. :)