Adatbázis importálása és exportálása phpMyAdminban

cPanel 6 perc olvasás

Egy weboldal költöztetésekor, egy fejlesztői másolat élesítésekor vagy egy régi mentés visszatöltésekor az adatbázist SQL fájlként kell kimenteni (exportálni) és betölteni (importálni). A cPanel tárhelyen erre a phpMyAdmin szolgál, nagyobb adatbázisnál pedig, ha a csomagod tartalmaz SSH-hozzáférést, a parancssori mysql kliens. A tárhelyeinken MariaDB 10.11 fut, amely a MySQL-lel kompatibilis.

A phpMyAdmin felületét általánosabban a phpMyAdmin alapjait bemutató blogcikkünk ismerteti.

A phpMyAdmin megnyitása

Jelentkezz be a cPanelbe, és az Adatbázisok csoportban kattints a phpMyAdmin ikonra. A phpMyAdmin külön jelszó nélkül, a cPanel fiókoddal nyílik meg, és bal oldalt a fiók összes adatbázisát mutatja.

cPanel Adatbázisok csoport: phpMyAdmin, Manage My Databases, Database Wizard

Adatbázis exportálása

  1. A bal oldali listában kattints az exportálandó adatbázis nevére, majd felül az Exportálás fülre.
  2. Az Exportálás módja maradhat Gyors - csak minimális opció megjelenítése, a Formátum pedig SQL.
  3. Kattints az Exportálás gombra. A böngésző letölti az adatbázis nevét viselő .sql fájlt.

phpMyAdmin Exportálás fül: Gyors exportálás SQL formátumban, Exportálás gomb

Nagyobb adatbázisnál válaszd az Egyedi - minden lehetséges opció megjelenítése módot, és a Kimenet részben a Tömörítés listában a gzip-elve pontot: a szöveges SQL fájl tömörítve általában a töredékére zsugorodik, és a phpMyAdmin így is vissza tudja tölteni. Az egyedi módban egyes táblákat ki is hagyhatsz.

Ha az adatbázist egy másik nevű adatbázisba fogod betölteni (cPanelben minden adatbázis neve a felhasználónévvel kezdődik), az egyedi mód CREATE DATABASE / USE utasítások hozzáadása kapcsolója maradjon kikapcsolva. Ez az alapállapot.

Az aWh a tárhelyről automatikus mentést is készít; egy adatbázis korábbi állapotának visszaállítását a JetBackupos visszaállításról szóló cikk mutatja be.

SQL mentés importálása

Az importálás egy már létező adatbázisba tölti be a fájl tartalmát. Ha még nincs adatbázisod, előbb hozd létre egy felhasználóval együtt (adatbázis és felhasználó létrehozása cPanelben).

  1. A bal oldali listában kattints a céladatbázisra, majd az Importálás fülre.
  2. A Fájl kiválasztása gombbal válaszd ki a mentést. Tömörített fájlt (gzip, bzip2, zip) is feltölthetsz, ha a neve .sql.gz, .sql.bz2 vagy .sql.zip végű. A feltöltés felső határa a (Max: 50MB) felirat szerint 50 MB; ennél nagyobb mentést tömöríts, vagy töltsd be SSH-n (lásd lejjebb).
  3. A fájl karakterkészlete maradjon utf-8, a Formátum SQL.
  4. Kattints az oldal alján az Importálás gombra.

phpMyAdmin Importálás fül: a kiválasztott t1-ok.sql.gz fájl, Max: 50MB, utf-8 karakterkészlet, SQL formátum és az Importálás gomb

Sikeres importálás után zöld sávban „Az importálás sikeresen befejeződött, N lekérdezés került végrehajtásra.” üzenet jelenik meg, alatta a lefuttatott utasításokkal.

Sikeres importálás: Az importálás sikeresen befejeződött, 3 lekérdezés került végrehajtásra

Figyelem: a zöld sáv akkor is megjelenik, ha az importálás közben hiba történt. Ilyenkor alatta egy piros Hiba doboz is látható a hibás utasítással és a „A MySQL mondta:” után a hibakóddal, az importálás pedig ennél az utasításnál megállt. Mindig görgess végig az eredményen. A leggyakoribb hibakódokat lejjebb találod.

Importálási hiba: a zöld sáv alatt piros Hiba doboz, #1273 - Unknown collation: utf8mb4_0900_ai_ci

Ha egy nagy importálás időtúllépéssel leáll, a Részleges importálás rész alapértelmezetten bekapcsolt beállítása miatt a phpMyAdmin megjegyzi, meddig jutott, és a fájl újbóli kiválasztása után onnan folytatja. Biztosabb azonban a tömörített fájl vagy az SSH.

WordPress adatbázis betöltése után

Ha egy WordPress oldal adatbázisát töltötted be egy új adatbázisba, a wp-config.php fájlban írd át a DB_NAME, DB_USER és DB_PASSWORD értékét az új adatbázis adataira, a $table_prefix pedig egyezzen a betöltött táblák előtagjával. Ha a domain is változott, a régi címeket a wp search-replace paranccsal cseréld le, ne az SQL fájlban szövegszerkesztővel. A teljes költözést a WordPress oldal áthozataláról szóló cikk írja le.

CSV fájl importálása egy táblába

Táblázatkezelőből (Excel, LibreOffice Calc, Google Táblázatok) mentett adatokat CSV formátumban egy meglévő táblába tölthetsz be.

  1. A bal oldali listában nyisd meg a táblát, majd kattints az Importálás fülre.
  2. Válaszd ki a CSV fájlt, a Formátum legyen CSV.
  3. Ha a fájl első sora oszlopneveket tartalmaz, az Ennyi számú lekérdezés (SQL esetén) kihagyása az elsőtől kezdve mezőbe írj 1-et. CSV-nél ez a fájl első sorait hagyja ki; ha 0 marad, a fejléc is adatsorként kerül a táblába.
  4. A Formátum specifikus opciók között az Oszlopok elválasztása ezzel mező alapértéke vessző (,). A magyar beállítású Excel pontosvesszővel (;) menti a CSV-t, ilyenkor ezt írd a mezőbe.
  5. Kattints az Importálás gombra.

phpMyAdmin CSV importálás a termekek táblába: 1 sor kihagyása, CSV formátum, Oszlopok elválasztása ezzel: vessző

A CSV oszlopainak sorrendje egyezzen a tábla oszlopaival. Ha eltér, vagy a fájlban kevesebb oszlop van, az Oszlopnevek mezőben vesszővel elválasztva sorold fel, melyik CSV-oszlop melyik táblaoszlopba kerüljön. Ha a táblázatkezelő felajánlja, a fájlt „CSV UTF-8” formátumban mentsd, különben az ékezetes betűk hibásan jelennek meg.

Importálás és exportálás SSH-n

Ha a csomagod tartalmaz SSH-hozzáférést (cP Premium, cP Pro, cP Pro 100), az SQL mentést a parancssori mysql (vagy a vele azonos mariadb) klienssel is betöltheted. Ennek nincs 50 MB-os korlátja és nem áll le időtúllépéssel, ezért a több száz megabájtos adatbázisokhoz ez a megfelelő út. A belépéshez SSH-kulcs kell, beállítását az SSH-kulcsról szóló cikk mutatja be.

  1. Töltsd fel a mentést SFTP-vel a tárhely saját könyvtárába, a public_html mappán kívülre, hogy a böngészőből ne lehessen letölteni.
  2. Lépj be SSH-n, és töltsd be a fájlt az adatbázis felhasználójával. A jelszót az Enter password: kérdésre add meg, így az nem kerül a parancssori előzményekbe:

    mysql -u felhasznalo_wp -p felhasznalo_wp < mentes.sql
    

    Tömörített mentést kicsomagolás nélkül is betölthetsz:

    zcat mentes.sql.gz | mysql -u felhasznalo_wp -p felhasznalo_wp
    
  3. Ha a parancs üzenet nélkül visszatér, a betöltés sikerült. Hiba esetén a kliens az első hibás utasításnál megáll, és kiírja a hibakódot és a sor számát, például ERROR 1062 (23000) at line 1: Duplicate entry '1' for key 'PRIMARY'.

Az első felhasznalo_wp az adatbázis-felhasználó, a második az adatbázis neve; a cPanelben mindkettő a tárhely felhasználónevével kezdődik. Exportálni a mysqldump paranccsal tudsz:

mysqldump -u felhasznalo_wp -p --single-transaction felhasznalo_wp | gzip > mentes.sql.gz

A --single-transaction kapcsoló az InnoDB táblákról zárolás nélkül, egységes állapotban készít mentést, így a weboldal közben is működik. WordPressnél a wp db import és wp db export parancs a tárhelyen nem működik, mert a PHP-ban le vannak tiltva az ehhez szükséges függvények; helyettük a fenti parancsokat használd (WP-CLI cPanel tárhelyen).

Ha saját gépről szeretnél grafikus programmal (HeidiSQL, DBeaver, MySQL Workbench) importálni, ahhoz az adatbázis távoli elérését kell engedélyezned.

Gyakori importhibák

Hibaüzenet Mi okozza? Megoldás
#1044 - Access denied for user '…' to database '…' A mentés elején CREATE DATABASE és USE utasítás áll egy másik adatbázisnévvel, amelyhez a fióknak nincs joga. Töröld ezt a két sort a fájlból, és a phpMyAdminban előbb a céladatbázist válaszd ki. Exportáláskor hagyd kikapcsolva a CREATE DATABASE / USE utasítások hozzáadása kapcsolót.
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci' A mentés MySQL 8-ból készült, és olyan rendezési szabályt (collation) használ, amelyet a MariaDB 10.11 nem ismer. Cseréld a fájlban a utf8mb4_0900_ai_ci szöveget mindenhol utf8mb4_unicode_ci-re.
#1227 - Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation A nézetek, triggerek vagy tárolt eljárások egy másik felhasználó nevében vannak megadva, például DEFINER=`root`@`localhost`. Töröld a DEFINER=… részeket; a betöltött objektum ekkor az importáló felhasználóé lesz.
#1062 - Duplikalt bejegyzes '…' a 'PRIMARY' kulcs szerint A táblában már vannak sorok ugyanazzal az azonosítóval. Üres adatbázisba importálj, vagy exportáláskor kapcsold be a DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER utasítások hozzáadása lehetőséget.
A fájl túl nagy, vagy a feltöltés megszakad A mentés nagyobb 50 MB-nál, vagy túl sokáig tart a betöltése. Tömörítsd gzip-pel, vagy töltsd be SSH-n.

SSH-n az első két csere egy-egy paranccsal elvégezhető, az eredeti fájl változatlan marad:

sed 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' mentes.sql > javitott.sql
sed -E 's/DEFINER=`[^`]+`@`[^`]+`//g' mentes.sql > javitott.sql

A javított fájlt ezután a szokásos módon importáld.

Vissza: cPanel leírások (48)