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:

<?php
$tabla = 'teszt';
$link = mysql_connect('localhost', 'user', 'pass')
	or die('Failed to connect');
mysql_query('USE adatbazisod')
	or die('Failed to set database');
mysql_query('SET NAMES utf8')
	or die('Failed to set UTF-8');

/**
 * Tablaszerkezet kiolvasasa
 */
$r = mysql_query('SHOW CREATE TABLE `' .
	mysql_real_escape_string($tabla, $link) . 
	'`', $link)
	or die('Failed to fetch table structure');
$a = mysql_fetch_assoc($r);
echo($a['Create Table'] . ";\r\n");

/**
 * Adatok kiolvasasa
 */
$r = mysql_query('SELECT * FROM `' .
	mysql_real_escape_string($tabla, $link) .
	'`') or die('Failed to fetch data');
while ($a = mysql_fetch_assoc($r)) {
	$data = array();
	foreach ($a as $value) {
		$data[] = "'" .
			mysql_real_escape_string($value, $link)
			. "'";
	}
	echo('INSERT INTO `' .
		mysql_real_escape_string($tabla, $link) .
		'` VALUES (' . implode(', ', $data) . ');' .
		"\r\n");
}
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