Inicio > PHP > Restaurar un Mysql Backup con php

Restaurar un Mysql Backup con php

Sábado, 5 de septiembre de 2009 Dejar un comentario Ir a comentarios

Escribo un post rápido sobre algo tan sencillo que ni se me había pasado por la cabeza, acostumbrado al acceso shell y el uso de mysqldump. Hace poco un amigo me comentaba el problema que tuvo al subir a un servidor un sql porque no tenía acceso shell para hacer mysqldump y tuvo que dividir el sql en varias partes para su uso en PhpMyAdmin…

Pero hay una solución más sencilla y mucho más rapida, que podemos encontrar en el blog de Daniel15

<?php
/*
 * Restore MySQL dump using PHP
 * (c) 2006 Daniel15
 * Last Update: 9th December 2006
 * Version: 0.2
 * Edited: Cleaned up the code a bit.
 *
 * Please feel free to use any part of this, but please give me some credit :-)
 */

// Name of the file
$filename = 'test.sql';
// MySQL host
$mysql_host = 'localhost';
// MySQL username
$mysql_username = 'root';
// MySQL password
$mysql_password = '';
// Database name
$mysql_database = 'test';

//////////////////////////////////////////////////////////////////////////////////////////////

// Connect to MySQL server
mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
// Select database
mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());

// Temporary variable, used to store current query
$templine = '';
// Read in entire file
$lines = file($filename);
// Loop through each line
foreach ($lines as $line)
{
	// Skip it if it's a comment
	if (substr($line, 0, 2) == '--' || $line == '')
		continue;

	// Add this line to the current segment
	$templine .= $line;
	// If it has a semicolon at the end, it's the end of the query
	if (substr(trim($line), -1, 1) == ';')
	{
		// Perform the query
		mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
		// Reset temp variable to empty
		$templine = '';
	}
}

?>
Categories: PHP Tags: , , ,
  1. admin
    Sábado, 5 de septiembre de 2009 a las 11:39 | #1

    Ah eso sí, posiblemente tengamos que usar ini_set(“memory_limit”,”216M”); o algo así porque sino nos pasará lo mismo que con phpmyadmin

  2. Domingo, 6 de septiembre de 2009 a las 02:57 | #2

    Y si la linea del punto y coma viene seguida del comentario ?

    Lo mejor es utilizar el cliente de mysql para cargar la data.

  3. admin
    Domingo, 6 de septiembre de 2009 a las 13:48 | #3

    Hombre evidentemente usar el cliente de mysql es lo mejor, pero yo hablo de un caso en particular bastante frecuente y es cuando no se tiene acceso a ese cliente de mysql porque tienes un hosting compartido o algo similar.

  1. Sin trackbacks aún.