ugrás a tartalomhoz

PHP SQL DUMP

imdawe · 2011. Jan. 23. (V), 09.19
Üdvözletem!
Egy olyan szkriptet szeretnék csinálni amely phpmyadmin-hoz hasonlóan egy sql fájlba ugyanolyan szintaktikával exportálja ki az adatokat.
Illetve vissza fele is ugyanígy kellene.
Utána néztem phpmyadminban a forráskódnak de elég bonyolult amit oda írtak. Nem valami átlátható.
A lényeg hogy a kiexportált adat phpmyadmin-al legyen kompatibilis, tehát bármilyen más megoldás is szóba jöhet.
Ebben kérek segítséget. Köszönöm.
 
1

Szia! A legegyszerűbb

mako · 2011. Jan. 23. (V), 10.54
Szia!

A legegyszerűbb megoldás, ha le tudod futtatni a MySQL mysqldump parancsát.
Az így kiexportált sql fájlt tudod importálni phpmyadmin-on keresztül, de akár parancssorból is vagy php-val.

szerk:
De ha google-ba beütöd, hogy "php mysql dump", akkor találni fogsz egyéb megoldásokat is.
2

Óvatosan

janoszen · 2011. Jan. 23. (V), 11.56
Óvatosan az ilyen parancssori végrehajtásokkal, főleg ha osztott tárhelyen vagy. Ha kötött a táblaszerkezet és a benne levő adatok, akkor lehet, hogy érdemesebb inkább írni egy egyszerű scriptet, ami ezt megcsinálja.

Minden különösebb tesztelés nélkül fejből fölírva:
  1. <?php  
  2. $tabla = 'teszt';  
  3. $link = mysql_connect('localhost''user''pass')  
  4.     or die('Failed to connect');  
  5. mysql_query('USE adatbazisod')  
  6.     or die('Failed to set database');  
  7. mysql_query('SET NAMES utf8')  
  8.     or die('Failed to set UTF-8');  
  9.   
  10. /** 
  11.  * Tablaszerkezet kiolvasasa 
  12.  */  
  13. $r = mysql_query('SHOW CREATE TABLE `' .  
  14.     mysql_real_escape_string($tabla$link) .   
  15.     '`'$link)  
  16.     or die('Failed to fetch table structure');  
  17. $a = mysql_fetch_assoc($r);  
  18. echo($a['Create Table'] . ";\r\n");  
  19.   
  20. /** 
  21.  * Adatok kiolvasasa 
  22.  */  
  23. $r = mysql_query('SELECT * FROM `' .  
  24.     mysql_real_escape_string($tabla$link) .  
  25.     '`'or die('Failed to fetch data');  
  26. while ($a = mysql_fetch_assoc($r)) {  
  27.     $data = array();  
  28.     foreach ($a as $value) {  
  29.         $data[] = "'" .  
  30.             mysql_real_escape_string($value$link)  
  31.             . "'";  
  32.     }  
  33.     echo('INSERT INTO `' .  
  34.         mysql_real_escape_string($tabla$link) .  
  35.         '` VALUES (' . implode(', '$data) . ');' .  
  36.         "\r\n");  
  37. }  
Teszteld le, mielőtt használod! Csak gyorsan fölskicceltem fejből, fogalmam sincs, hogy működik-e!

Update: elsőre jónak néz ki, nem tudom, az auto incrementekkel hogy viselkedik. Próbáld ki.
3

Ezzel csupán az a probléma

imdawe · 2011. Feb. 7. (H), 00.45
Ezzel csupán az a probléma hogy ezt a fájlt mysql könyvtárba generálja, és ha le van tiltva hogy másoljak akármit is php-val ide-oda nem érek vele semmit.

A kód viszont jónak tűnik nagyon szépen köszönöm :)
4

Megadható

Poetro · 2011. Feb. 7. (H), 10.13
A mysqldump parancsnak megadhatod, hogy hova mentse az adatbázist. Lásd --result-file=file_name, -r file_name, illetve át is irányíthatod a dump-ot egy fájlba:
mysqldump db_name > backup-file.sql