REKLAMA: Jeśli już potrafisz tworzyć strony internetowe, wejdź na blog z poradami dla średnio-zaawansowanych webmasterów www.PomocnikWebmastera.pl |
Ostatnio miałem pewien problem: chciałem przenieść jeden serwis na inny serwer. Wszystkie teksty były w bazie danych. Zaimportowałem bazę danych z pliku SQL za pomocą programu phpMyAdmin a tu zonk - na stronie zamiast polskich liter miałem pytajniki. Próbowałem różnych rzeczy, w końcu wpadłem na ciekawy pomysł. Podzieliłem plik SQL na dwa pliki. W pierwszym zapisałem tylko instrukcje do tworzenia tabel. Ten plik zaimportowałem z programu phpMyAdmin, który ładnie utworzył tabele. Natomiast w drugim pliku zostawiłem same instrukcje wstawiania wpisu do bazy danych (były same linijki zaczynające się od słów INSERT INTO). Plik nazwałem 1.sql i wrzuciłem go na serwer do jakiegoś roboczego katalogu. Utworzyłem również w tym katalogu plik o nazwie import.php o takiej zawartości:
<? $db = mysql_connect ("localhost", "USER", "HASŁO"); mysql_select_db ("NAZWA BAZY"); $G=file("1.sql"); for ($a=0; $a<count($G); $a++){ $t=$G[$a]; $x=mysql_query ("$t",$db); echo((int)$x); } unset($a); mysql_close ($db); ?> |
Ten prosty skrypt odpaliłem z przeglądarki internetowej. Czyta on po jednej linijce i wysyła do bazy zapytanie. Po odpaleniu pliku należy skasować cały katalog roboczy. U mnie ta sztuczka pomogła, zamiast krzaczków miałem później ładne polskie ogonki :-). Takie operacje najlepiej wykonywać w nocy, gdy serwer nie jest przeciążony (w moim wypadku było to około 10000 nowych rekordów a plik miał 6 MB, więc troszkę serwerek pomęczyłem).
Uwaga: zazwyczaj na serwerach PHP ma ograniczenie - skrypt nie może zużywać więcej niż 16MB, ten skrypt ładuje od razu cały plik do pamięci. Jeśli chcesz zaimportować duy plik PHP, to albo przerób skrypt, aby czytał po 1 linijce z pliku, albo podziel plik na kilka mniejszych.