Kaip kopijuoti duomenis iš MySQL duomenų bazės? Turinys 1 Duomenų eksportavimas............................................................................................................................1 2 Duomenų importavimas.............................................................................................................................4 2.1 Failo importavimas.............................................................................................................................4 2.2 SQL užklausa.....................................................................................................................................5 3 Pastabos .....................................................................................................................................................6 4 Atsakomybės ribojimas..............................................................................................................................6
E
107 turinio valdymo sistema duomenis (pvz., vartotojų vardus), laiko MySQL duomenų bazėje. Kartais e107 tinklapio administratoriui dėl kažkokių priežasčių prireikia susirinkti šiuos duomenis – pvz., tinklapis perkeliamas į kitą serverį arba tiesiog norima pasidaryti duomenų kopiją. Daug kam kyla klausimas: kaip kopijuoti duomenis iš MySQL duomenų bazės? Todėl aš paruošiau tokį trumpą dokumentą, kaip pasidaryti duomenų arba duomenų bazės struktūros kopiją.
1 Duomenų eksportavimas Tam aš sukūriau duomenų bazę „testas“, kurioje yra lentelė „vartotojai“ su tinklalapio narių vardu, pavarde, el. pašto adresu. Sakykime, kad serveris, kuriame laikote savo e107 tinklalapį, turi prisijungimo prie MySQL duomenų bazės paslaugą. O jungtis galima per phpMyAdmin programą. Sąsajos kalbą pasirinkau anglų, nes nežinau, kokią jūs galite pasirinkti savame serveryje. Taigi, atsidarome duomenų bazę „testas“:
Lentelė „vartotojai“
Pav. 1: Duomenų bazė „testas“ Kaip matote, šioje DB yra tik viena lentelė (table) - „vartotojai“. Galima ją atidaryti paspaudę pele ant lentelės pavadinimo. Bus matomas štai toks vaizdas:
2006-05-09
Jur Kis
Psl. 1 iš 6
Skirtukas Browse
Pav. 2: Mygtuko Browse paspaudimas Paspaudę mygtuką Browse pamatysite tos lentelės turinį – tinklalapio narių vardą, pavardę, el pašto adresą:
Lentelės turinys – Narių vardas,vardai, pavardės... vartotojų pavardė...
Pav. 3: Lentelės „vartotojai“ turinys Dabar, paspaudus mygtuką Export, galima nukopijuoti duomenis ar net pačią lentelę į atskirą failą, kurį vėliau galėsime panaudoti kitoje duomenų bazėje. Kadangi tariama, kad duomenys bus perkeliami į kitą serverį, kuriame jau yra įdiegta e107, tai mums reikės tik kopijuoti duomenis, tačiau ne pačia lentelės 2006-05-09
Jur Kis
Psl. 2 iš 6
struktūrą – juk kitoje e107 jau yra lentelė su vartotojais!!! Todėl darome taip: 1. Nuimama varnelė nuo žymimojo laukelio Structure. 2. Uždedame varnelę laukelyje Save as file. 3. Spaudžiame mygtuką Go.
1 2 3
Pav. 4: Paruošimas eksportuoti DĖMESIO!!! Jei nenuimsite varnelės nuo „Structure“, tai nukopijuos lentelės struktūrą su duomenimis, tačiau lentelės struktūros mums nereikia, tik lentelės duomenų. Jei daugiau nieko nekeisite, tai gausite failą, kurio pavadinimas bus toks, koks ir lentelės pavadinimas. Mano atveju tai yra vartotojai.sql. Mano failo turinys atrodo taip (jūsų, be abejo, bus kitokia): -- phpMyAdmin SQL Dump -- version 2.7.0 -- http://www.phpmyadmin.net --- Host: localhost -- Generation Time: Jan 10, 2006 at 02:31 PM -- Server version: 5.0.15 -- PHP Version: 4.4.0 --- Database: `testas` 2006-05-09
Jur Kis
Psl. 3 iš 6
---- Dumping data for table `vartotojai` -INSERT INTO `vartotojai` VALUES (1, 'Petras', 'Petraitis', '
[email protected]'); INSERT INTO `vartotojai` VALUES (2, 'Jonas', 'Jonaitis', '
[email protected]'); Žinoma, šį failą galite redaguoti. Pvz, gali pridėti dar vieną eilutę INSERT INTO `vartotojai` VALUES (3, 'Onute', 'Onaitytė', '
[email protected]'); Tada duomenų bazės lentelėje jau bus vienu vartotoju daugiau, kai importuosite failą.
2 Duomenų importavimas Dabar, kai jau turime duomenų failą, turi naują e107 kitame serveryje, galite importuoti duomenis. Yra du būdai, kaip tai padaryti.
2.1
Failo importavimas
Savo duomenų bazėje, lentelėje „vartotojai“ (pas jus, be abejo, vadinsis kitaip), spaudžiame skirtuką Import. Atsidaro langas
Pav. 5: Importo langas Šiame lange lauke Location of the text file įrašome failą, iš kurio norime importuoti (mano atveju vartotojai.sql). Žinote, kaip, ar ne? Spaudžiame skirtuką Browse, susirandame failą ir t.t.... Spaudžiame mygtuką Go ir viskas -duomenys jau įrašyti lentelėje „vartotojai“. Per mygtuką Browse galite patikrinti, ar tikrai duomenys yra lentelėje. Atkreipkite dėmesį – mano lentelėje jau yra daugiau įrašų, kadangi aš pasakojau, kad galima koreguoti *.sql failą rankiniu būdu. 2006-05-09
Jur Kis
Psl. 4 iš 6
Štai kaip viskas atrodo:
Pav. 6: Lentelė po importo Galite palyginti, koks buvo lentelės turinys prieš eksportuojant. Jei norite dėl kažkokių priežasčių išvalyti lentelę, spauskite mygtuką Empty. DĖMESIO!!! Nepaspauskite mygtuko Drop, jis ištrina visą lentelę, o ne jos duomenis.
2.2
SQL užklausa.
Aptarsiu antrąjį variantą, kaip įvesti duomenis į lentelę. Atsidarykite lentelę „vartotojai“, pasirinkite skirtuką SQL. Atsidariusiame lange įrašykite savo*.sql failo turinį (tiesiog nukopijuokite iš turimo SQL failo):
2006-05-09
Jur Kis
Psl. 5 iš 6
Pav. 7: SQL užklausa importuoti Paspauskite mygtuką Go turite gauti tą patį rezultatą, kaip ir pirmojo varianto atveju.
3 Pastabos a) Toks nedidelis pastebėjimas: lentelių user, news, news_category darysite kopijas paredaguokite: ištrinkite pirmuosius įrašus (su skaičiuku .) Kodėl? Ogi todėl, kad kai įdiegsite e107, tiek vartotojas (jūs pats), tiek naujiena (kurią parašė e107), tiek naujienos kategorija (Misc) jau bus duomenų bazėje. Taip gali būti ir su kitomis lentelėmis – jose jau gali būti įrašų pagal numatymą. b) Neužmirškite sutvarkyti numeraciją (po VALUES ir skliausto), jei pridėsite/ištrinsite įrašų eilutes NSERT INTO `vartotojai` VALUES (1, 'Petras', 'Petraitis', '
[email protected]'); INSERT INTO `vartotojai` VALUES (2, 'Jonas', 'Jonaitis', '
[email protected]'); Nežinau, gal nieko baisaus, jei nepakeisite, bet lai tebūnie tvarka.
4 Atsakomybės ribojimas Šis dokumentas nepretenduoja į labai teisingą, smulkų DB kopijos darymo aprašymą, todėl išdėstyta tik esmė. Aš neatsakau už duomenų praradimą, tinklalapio sugadinimą, praskeltas kaktas ir išsirautus plaukus.
2006-05-09
Jur Kis
Psl. 6 iš 6