jak za pomoca skryptu php umiescic w簔ie kopie趎ych utworzona wczesniej przez mysqldump


[MySQL][PHP] Jak za pomoc膮 skryptu PHP umie艣ci膰 w bazie kopi臋 danych utworzon膮 wcze艣niej przez mysqldump?

0x01 graphic

Chcesz odtworzy膰 zawarto艣膰 bazy danych, ale na docelowym serwerze nie mo偶esz skorzysta膰 z programu mysqldump, dlatego chcesz wykorzysta膰 skrypt PHP do tego celu.

0x01 graphic

Cz臋sto jest tak, 偶e mo偶esz wykona膰 kopi臋 bazy danych do pliku za pomoc膮 programu mysqldump np. na swoim serwerze lokalnym (co opisuj臋 w osobnej poradzie - link na ko艅cu), natomiast nie zawsze masz dost臋p do tego programu na serwerze docelowym, np. u klienta.

Sam bardzo cz臋sto wykonuj臋 projekty baz danych lokalnie, w Windowsie, natomiast gdy baza danych zostanie zape艂niona rekordami, nale偶y j膮 przenie艣膰 na serwer klienta. Nie zawsze ma on uprawnienia administratora i nie mo偶na skorzysta膰 z programu mysqldump, aby odtworzy膰 struktur臋 i zawarto艣膰 bazy danych u niego.

W takim wypadku pozostaje albo r臋czne przepisywanie bazy danych albo zaimportowanie przez odpowiedni skrypt PHP pliku, kt贸ry powsta艂 z mysqldump, a kt贸ry sam pobierze wszystkie tabele oraz rekordy i odtworzy ich struktur臋 w bazie, identycznie, jak zrobi艂by to mysqldump. Napiszmy oczywi艣cie prosty i skuteczny skrypt.

Zanim napiszemy skrypt, wyeksportujmy sobie do pliku baza.sql zawarto艣膰 przyk艂adowej bazy o nazwie baza1:

mysqldump --all -u user -ppassword baza1 >baza.sql

w wyniku tego polecenia otrzymasz plik tekstowy wygl膮daj膮cy mniej wi臋cej tak:

-- MySQL dump 9.07

--

-- Host: localhost Database: baza1

---------------------------------------------------------

-- Server version 4.0.12-max

--

-- Table structure for table 'teksty'

--

CREATE TABLE teksty (

id int(11) NOT NULL auto_increment,

tytul char(100) default NULL,

tresc char(100) default NULL,

PRIMARY KEY (id)

) TYPE=MyISAM;

--

-- Dumping data for table 'teksty'

--

INSERT INTO teksty VALUES (1,'tytul1; reportaze','tresc1 reportaze');

INSERT INTO teksty VALUES (2,'tytul2 ;reportaze','tresc2 reportaze;');

INSERT INTO teksty VALUES (3,'tytul3 reportaze','tresc3 reporta;ze');

--

-- Table structure for table 'auta'

--

CREATE TABLE auta (

marka char(100) NOT NULL default '',

model char(100) NOT NULL default '',

rok char(100) NOT NULL default ''

) TYPE=MyISAM;

--

-- Dumping data for table 'auta'

--

INSERT INTO auta VALUES ('Ford','Escort','1996');

INSERT INTO auta VALUES ('Ford','Escort','1998');

INSERT INTO auta VALUES ('Ford','Escort','1999');

INSERT INTO auta VALUES ('Ford','Sierra','1990');

INSERT INTO auta VALUES ('Ford','Sierra','1989');

INSERT INTO auta VALUES ('Ford','Mustang','1994');

INSERT INTO auta VALUES ('Opel','Corsa','1996');

INSERT INTO auta VALUES ('Opel','Corsa','1993');

INSERT INTO auta VALUES ('Opel','Corsa','1995');

INSERT INTO auta VALUES ('Opel','Vectra','1999');

INSERT INTO auta VALUES ('Opel','Vectra','2001');

INSERT INTO auta VALUES ('Opel','Vectra','1998');

INSERT INTO auta VALUES ('Opel','Astra','1999');

INSERT INTO auta VALUES ('Fiat','Punto','2002');

INSERT INTO auta VALUES ('Fiat','Punto','2001');

INSERT INTO auta VALUES ('Fiat','Punto','2001');

INSERT INTO auta VALUES ('Fiat','Tipo','1992');

INSERT INTO auta VALUES ('Fiat','Siena','1998');

INSERT INTO auta VALUES ('Fiat','Siena','1997');

INSERT INTO auta VALUES ('Fiat','Brava','2001');

Zawiera on dane o wszystkich tabelach w bazie (auta i teksty) w bazie baza1. Opisana jest ich struktura i dane w postaci gotowych zapyta艅 SQL. Wystarczy te zapytania odczyta膰 i wykona膰 w nowej bazie, aby stworzy膰 takie same tabele i dane w tych tabelach. Oto skrypt, kt贸ry wykona to zadanie:

<?

$sql_serwer = "localhost";

$sql_user = "user";

$sql_password = "password";

$sql_baza = "baza1";

$plik = file("baza.sql");

foreach ($plik as $linia) {

if (!eregi("^--", $linia)) $sql .= trim($linia)."\n";

}

// echo $sql;

$b = mysql_connect($sql_serwer, $sql_user, $sql_password);

if ($b) {

$wynik = mysql_select_db($sql_baza,$b);

if ($wynik) {

$pytania = explode(";\n", $sql);

for ($i=0;$i<count($pytania)-1;$i++) {

if (mysql_query($pytania[$i],$b)) echo "<br><b>OK:</b> $pytania[$i]\n";

else echo "<br><b>B艂膮d:</b> $pytania[$i]\n";

}

}

mysql_close($b);

}

?>

Odczytuje on zawarto艣膰 pliku i usuwa linie z komentarzami (zaczynaj膮 si臋 od dw贸ch 艣rednik贸w, co powodowa艂yby b艂臋dy), a ca艂o艣膰 umieszcza w zmiennej $sql.

Nast臋pnie 艂膮czymy si臋 z wybran膮 baz膮 na docelowym serwerze i rozbijamy wcze艣niej pobrany plik ze struktur膮 i danymi na posta膰 tablicy z pojedynczymi poleceniami. 艁atwo mo偶na podzieli膰 ca艂y plik na fragmenty, bo polecenia oddzielone s膮 艣rednikami i przej艣ciem do nowej linii.

Pozosta艂o ju偶 tylko wykona膰 wszystkie polecenia w p臋tli for i wypisa膰 na ekran stan wykonania dla ka偶dego polecenia. Gdyby co艣 posz艂o nie tak, 艂atwo wy艂apa膰 wtedy b艂臋dy. Mo偶esz te偶 wypisywa膰 tylko b艂臋dy bez poprawnie dodanych rekord贸w



Wyszukiwarka

Podobne podstrony:
Jak za pomoc膮 PHP pobra膰 nazwy tabel dost臋pne w wybranej bazie danych, PHP Skrypty
Jak za pomoc膮 kompasu okre艣li膰 kierunek marszu
Jak za pomoc膮 kompasu okre艣li膰 kierunek marszu, SURVIVAL wojsko militarne turystyka
Brandler, Grinder Z 偶ab w ksi臋偶niczki jak za pomoc膮 s艂贸w przeobrazi膰 siebie i swoje 偶ycie (NOWA)
Jak pobra膰 aktualny czas za pomoc膮 potoko艂u DAYTIME z serwer贸w b臋d膮cych wzorcami czasu, PHP Skrypty
Jak pobra膰 aktualny czas za pomoc膮 potoko艂u TIME z serwer贸w b臋d膮cych wzorcami czasu, PHP Skrypty
Jak uruchomi膰 skrypt znajduj膮cy si臋 na innym serwerze za pomoc膮 aktualnie wykonywanego skryptu
Jak wypisa膰 na ekranie w PHP zawarto艣膰 dowolnej tabeli, PHP Skrypty
Jak kontrolowa膰 komputer za pomoc膮 g艂osu
Jak uszczelnia膰 za pomoc膮 silikonu(1)
Jak uruchomi膰 komputer za pomoc膮 ostatniej znanej dobrej konfiguracji
Jak wstawi膰 link graficzny na blog za pomoc膮 kodu HTML
Jak zaktualizowa膰?shboard za pomoc膮 pendrive
Hipnotyzm slowa Jak podbijac umysly Twoich klientow za pomoca perswazyjnych tekstow hipslo (2)
jak przemawiac do ludzi (jakies referaty jak czytac itp zeby bylo ciekawie) otworz za pomoca ADOBE R
Jak zatrzyma膰 wykonywanie skryptu na okre艣lon膮 liczb臋 sekund, PHP Skrypty
Jak wstawi膰 link na blog za pomoc膮 kodu HTML
Jak wy艂膮czy膰 pokazywanie komunikat贸w o b艂臋dach w skryptach PHP, PHP Skrypty
Jak okra艣膰 i zaw艂aszczy膰 ca艂e kraje za pomoc膮 d艂ugu

wi臋cej podobnych podstron