Importowanie bazy danych MySQL

REKLAMA:
Jeśli chcesz się nauczyć tworzyć strony internetowe, a nie masz o tym pojęcia wejdź na bezpłatny blog www.VideoWebmaster.pl

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.

wstecz