Restaurar un Mysql Backup con php
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 = ''; } } ?>
Ah eso sí, posiblemente tengamos que usar ini_set(“memory_limit”,”216M”); o algo así porque sino nos pasará lo mismo que con phpmyadmin
Y si la linea del punto y coma viene seguida del comentario ?
Lo mejor es utilizar el cliente de mysql para cargar la data.
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.