poblarDB v1.11

1 05 2010

Hace algún tiempo que venia buscando un script así, no encontré uno que funcione como quería así que me lance a crearlo: muchos dolores de cabeza me llevaron a pensar que no valía la pena, pero luego de mucho tiempo corrigiendo errores creo que ya esta listo:poblarDB.php la inversa de mysqldumping.php (pasar de .sql a la DB en lugar de DB a un .sql)

<?php
/*	poblarDB v1.11 by FCR
*	volcar el contenido de un .sql a una DB
*/
?>
<html>
<head>
<title>poblarDB v1.1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
body{
font-size:17px;
background-color:#EEEEEE;
}
.nbox{
font-size:18px;
background-color:#FFFFFF;
}
.dbox{
font-size:19px;
color:#00FF00;
background-color:#CAE0F0;
}
#formu{
background-color:#CAE0F0;
width:80%;
}
.halfspn{
width:50%;
}
.SL{
width:20px;
height:5px;
background-color:white;
}
.ML{
width:20px;
height:5px;
background-color:#0000FF;
}
</style>
</head>

<body>
<div id="formu">
<form name="datos" method="POST">
<table>
<tr><td class="halfspn">host</td><td class="halfspn"><input type="text" name="host" value="<?php echo $_POST['host']; ?>" class="nbox"></td></tr>
<tr><td class="halfspn">usuario</td><td class="halfspn"><input type="text" name="ucr" value="<?php echo $_POST['ucr']; ?>" class="nbox"></td></tr>
<tr><td class="halfspn">contraseña</td><td class="halfspn"><input type="password" name="pax" value="<?php echo $_POST['pax']; ?>" class="nbox"></td></tr>
<tr><td class="halfspn">Base de Datos</td><td class="halfspn"><input type="text" name="dbn" value="<?php echo $_POST['dbn']; ?>" class="nbox"></td></tr>
<tr>
<td class="halfspn">Archivo</td>
<td class="halfspn">
<input type="text" name="file" value="<?php echo $_POST['file']; ?>" class="nbox">
</td>
</tr>
</table>
<input type="hidden" name="poblar" value="GO!">
<input type="submit"  value="Poblar" class="dbox">
</form>
</div>
<?php
if($_POST['poblar'] && $_POST['file']){
$hostname = $_POST['host'];
$username = $_POST['ucr'];
$password = $_POST['pax'];
$dbName = $_POST['dbn'];
$mydotsql = $_POST['file'];

if ( !is_file( $mydotsql ) || !is_readable( $mydotsql ) ) {
	echo $mydotsql . " Archivo no encontrado.<br>";
	exit();
}
$fecha = date("d/m/Y h:i");
$link = mysql_connect($hostname,$username,$password) or die("Can't create connection");
if(!$link){echo '<span style="color:RED;">Error al conectar a base de datos.</span>';exit;}
$dblink = mysql_select_db($dbName, $link) or die("Can't connect to database");
if(!$dblink){echo '<span style="color:RED;">Error al conectar a base de datos.</span>';exit;}

$sums = explode( "\n", rtrim( file_get_contents( $mydotsql ) ) );
$consultaextensa = "";

foreach ( $sums as $line ) {
	$matched = "no";
	$iscomment = strpos($line, '--');$linelen=strlen($line)-1;$blinelen=$linelen-1;
	if ($iscomment !== 0 && $line <> "" && $line<>"") {//poner un if es comment no insertar
		if(strpos($line, ';') == $linelen) {$eosinglelinesql = true;} else {$eosinglelinesql = false;}

		if ($eosinglelinesql && strpos($line, ')') !== 0 && strpos($line, '(') !== 0) {//una consulta de una sola linea, no eta entre () y termina en ';'
		echo '<br><span class="SL"> </span>'.$line;
			$xyd=mysql_query($line);
			if($xyd){
				echo '<span style="color:GREEN">OK.</span>';
				$matched="si";
			}
			if($matched=="no"){
				echo '<span style="color:RED;">FALLO.</span>';
				echo  "<br>" . mysql_error();
			}
			@mysql_free_result($xyd);

			$consultaextensa = "";
			continue;
		}

		//si es de varias lineas, habra que juntarlas todas
		$consultaextensa .= $line;//str_replace('\n','',$line);
		if ( $eosinglelinesql ) {//fin de consulta extensa, termina en ';', ejecutar
		echo '<br><span class="ML"> </span>'.$consultaextensa; 

			$xyd=mysql_query($consultaextensa);
			if($xyd){
				echo '<span style="color:GREEN;">OK.</span>';
				$matched="si";
			}
			if($matched=="no"){
				echo '<span style="color:RED;">FALLO.</span>';
				echo  "<br>" . mysql_error();
			}
			@mysql_free_result($xyd);

			$consultaextensa = "";
		}
	}

}
mysql_close();
}
?>

</body>
</html>
Anuncios

Acciones

Information

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: