![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
Mam dwie bazy danych, działające na tym samym serwerze. Pierwsza baza ma następującą tabelę:
którą chcę przerzucić do drugiej bazy danych o trochę odmiennej budowie tabeli:
Relacje mają być następujące: product_code = produkt id = (auto increment) key = nazwa value = opis Jak zrobić taką kopię najwydajniej z poziomu PHP? Warto dodać, że tabela posiada ponad 250.000 wpisów! |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Najwydajniej chyba byłoby zrzucić dane do pliku CSV, po czym wczytać je do nowej tabeli poprzez LOAD DATA. Kwestia tylko czy pole opis nie będzie tutaj problemem... Tak czy siak LOAD DATA jest pierońsko szybkie więc stawiałbym na tą funkcję.
PS: jeśli bazy są na tym samym serwerze* możesz wykonać INSERT INTO FROM SELECT - będziesz miał mniej zachodu, a i czas wykonania może być szybszy. Generalnie na czas przerzutu danych usunąłbym indeksy (używasz MyISAM więc o wyłączenie sprawdzania więzów integralności nie ma się co martwić). * widzę, że są więc spróbowałbym tej opcji Ten post edytował phpion 8.09.2009, 20:33:41 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 012 Pomógł: 109 Dołączył: 26.09.2003 Skąd: nexis.pl Ostrzeżenie: (0%) ![]() ![]() |
PS: jeśli bazy są na tym samym serwerze* możesz wykonać INSERT INTO FROM SELECT - będziesz miał mniej zachodu, a i czas wykonania może być szybszy. Generalnie na czas przerzutu danych usunąłbym indeksy (używasz MyISAM więc o wyłączenie sprawdzania więzów integralności nie ma się co martwić). * widzę, że są więc spróbowałbym tej opcji Zapomniałem dodać, że każda baza ma innego użytkownika, więc ten sposób chyba odpada. Operacja ma się wykonywać docelowo co 24 godziny, więc chciałbym aby załatwił to skrypt PHP, odpalany przez CRON. Ten post edytował nexis 8.09.2009, 21:48:34 |
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
Zapomniałem dodać, że każda baza ma innego użytkownika, więc ten sposób chyba odpada. Nie możesz stworzyć dodatkowego użytkownika mającego dostęp do obu baz? Operacja ma się wykonywać docelowo co 24 godziny, więc chciałbym aby załatwił to skrypt PHP, odpalany przez CRON. No to tym lepiej zrobić to w samym SQL. Możesz odpalić w CRONie bezpośrednio samo zapytanie SQL (bez ingerencji w PHP) lub skorzystać z EVENTów w MySQL (wiem, że są/powinny być, ale nigdy sam z nich nie korzystałem). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 18:00 |