Sziasztok!
Gyakran előfordul velem, hogy fel kell tenni egy mysql adatbázist, valamilyen tárhelyre egy exportált SQL-ből. Ameddig az adatbázis mérete nem túl nagy nincs is baj, ott van a phpMyAdmin amiben lehet lehet SQL-t futtatni. Vagy ideális esetben az embernek van rendes hozzáférése szerverhez, de valahogy ez nem jellemző :)
De mi a helyzet, amikor az exportált állományunk, 50 - 100 MB, vagy akár gigabyteos méretű, és a file feltöltési korlátunk 2MB, darabolhatjuk, zippelhetjük, nagyon jó játék lesz :)
Találtam egy nagyon egyszerű scriptet(nem én írtam), amit csak fel kell tölteni FTP-re és lefuttatni.
Az elv nagyon egyszerű, beolvassuk soronként és lefuttatjuk az SQL-t, de megszabjuk a határt, hogy egyszerre hány sort dolgozhat fel. Ha elérjük, akkor oldalújratöltünk, majd folytatjuk. Így nem fogjuk elérni a php MAX_EXECUTION_TIME limitjét.
Még nem találkoztam olyannal szerverrel, ahol ne működött volna, gyengéje egyértelműen a 4-es PHP, és a 4.1 feletti MySQL kombináció, de a szervereken szerencsére ez a párosítás nem divat. Továbbá, hogy a kód nem túl szép, és adatbiztonság szempontjából inkább nem is fűzök hozzá semmit :)
PHPMyAdmin által generált SQL -ekre szoktam használni, megy szépen.
Link:
http://filebeam.com/21d860208c47d9718da1eb0063e00d14 Script 1
http://filebeam.com/b77b72d66addf3a4b47c21994561cfb7 Script 2
Használata roppant egyszerű. Az FTP tárhelyedre feltöltöd EGY mappába a PHPMyAdmin-ból exportált SQL fájlt és a script.php és script2.php nevű fájlt.(Azért hangsúlyoztam ki, hogy egy mappába, mert ha nem azonos mappába van a kettő, akkor nem fog működni.) A script.php-t nyisd meg, majd módosítsd az alábbiak szerint a saját adataidra:
define("DBHOST", "MYSQL HOSZTOD");
define("DBUSER", "ADATBAZISOD_FELHASZNALOJA");
define("DBPASS", "ADATBAZISOD_JELSZAVA");
define("DBNAME", "ADATBAZIS_NEVE");
Majd keresd meg ezt a részt:
$f = fopen("db.sql", "r");
és a "db.sql" fájlt írd át arra, ami a te exportált SQL fájlodnak a neve.
Ugyanezt csináld meg a script2.php fájllal is.
Mentsd el.
Menj fel az alábbi címekre, majd az alábbi sorrendben futtasd őket!
1. http://atecimed.hu/mappaahovaraktad/script.php (Enter és várd meg míg végigmegy!)
2. http://atecimed.hu/mappaahovaraktad/script2.php (Enter és várd meg míg végigmegy!)
Élvezd, hogy másodpercek alatt beimportálta a nagy méretű fájlodat!
Remélem sokmindenkinek tudtam segíteni :)
TouCH
Na ez bizony hasznos!
Bár a nagy SQL fájlokat Navicattel is tudod importálni, feltéve ha az adott hostnál (ha hostnál vagy) engedélyezve van. ;D