Foros del Web » Programando para Internet » PHP »

Importar archivo.sql mediante PHP

Estas en el tema de Importar archivo.sql mediante PHP en el foro de PHP en Foros del Web. Hola buenas quisiera preguntar si existe alguna forma de importar una base de datos que tengo en un archivo .sql mediante php. He probado añadiendo ...
  #1 (permalink)  
Antiguo 23/11/2011, 10:25
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Importar archivo.sql mediante PHP

Hola buenas quisiera preguntar si existe alguna forma de importar una base de datos que tengo en un archivo .sql mediante php.

He probado añadiendo esta linea

Código PHP:
$ruta=getcwd()."/1.sql";
$db_selected mysql_query (file_get_contents('$ruta')) or die(mysql_error()); 
Pero según he visto solo puedes insertar 1 tabla con cada query, si intentas insertarlas todas te da un error de sintaxis. He conseguido insertar todas las tablas mediante el archivo PHP, pero he tenido que añadir tantas query como tablas queria introducir en la database de phpmyadmin. Es por eso que agradecería mucho si alguien pudiera decirme si hay algun comando para poder cargar el archivo sql y de esa forma evitarme tantas consultas.

Muchas gracias por todo, aqui os dejo como lo tengo ahora.

Código PHP:
<?php
$conecta 
mysql_connect('localhost''root''admin');
if (!
$conecta) {
    die(
'No conectat : ' mysql_error());
}
$db_selected mysql_select_db('examens'$conecta);
if (!
$db_selected) {
    echo 
'No es troba la base de dades',$db_selected,'<br/>';
    die (
mysql_error());
}
else {
    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `alumnes` (`id_alumne` int(11) NOT NULL AUTO_INCREMENT, `id_usuari_fk` int(11) NOT NULL, `nom_alumne` text NOT NULL, PRIMARY KEY (`id_alumne`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `assignacio_alumnes` (`id_alumne_fk` int(11) NOT NULL,`id_materia_fk` int(11) NOT NULL,  PRIMARY KEY (`id_alumne_fk`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `assignacio_professors` (`id_professor_fk` int(11) NOT NULL,`id_materia_fk` int(11) NOT NULL, PRIMARY KEY (`id_professor_fk`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `avaluacio_alumnes` (`id_avaluacio` int(11) NOT NULL AUTO_INCREMENT,`id_alumne_fk` int(11)  NOT NULL,`id_examen_fk` int(11) NOT NULL,`nota_final` int(11) NOT NULL,`data` date NOT NULL,PRIMARY KEY (`id_avaluacio`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `examen` (`id_examen` int(11) NOT NULL AUTO_INCREMENT,`id_materia_fk` int(11) NOT NULL, `data_examen` date NOT NULL, PRIMARY KEY (`id_examen`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `materia` (`id_materia` int(11) NOT NULL AUTO_INCREMENT,`nom_materia` text NOT NULL, `data_inicial` date NOT NULL,`data_final` date NOT NULL,PRIMARY KEY (`id_materia`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `preguntes` (`id_pregunta` int(11) NOT NULL AUTO_INCREMENT,`id_examen_fk` int(11) NOT NULL, `pregunta` text NOT NULL,`id_resposta_correcta` int(11) NOT NULL,PRIMARY KEY (`id_pregunta`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());
    
    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `professors` (`id_professor` int(11) NOT NULL AUTO_INCREMENT,`id_usuari_fk` int(11) NOT NULL, `nom_professor` text NOT NULL,PRIMARY KEY (`id_professor`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `respostes` (`id_resposta` int(11) NOT NULL AUTO_INCREMENT,`id_pregunta_fk` int(11) NOT NULL, `resposta` text NOT NULL,PRIMARY KEY (`id_resposta`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `resultat_examen` (`id_resultat` int(11) NOT NULL AUTO_INCREMENT,`id_alumne_fk` int(11) NOT NULL,`id_examen_fk` int(11) NOT NULL,`id_pregunta_fk` int(11) NOT NULL,`id_resposta_fk` int(11) NOT NULL,`data` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id_resultat`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());

    
$db_selected mysql_query ("CREATE TABLE IF NOT EXISTS `usuaris` (`id_usuari` int(11) NOT NULL AUTO_INCREMENT,`usuari` text NOT NULL,`contrasenya` text NOT NULL,`rol` text NOT NULL,PRIMARY KEY (`id_usuari`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;") or die(mysql_error());
}

?>
  #2 (permalink)  
Antiguo 23/11/2011, 10:28
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Importar archivo.sql mediante PHP

esa es una limitación de esa librería, tienes varias opciones:

1 - utilizar otra librería que soporte SQL múltiples como PDO o Mysqli

2 - separar las lineas del archivo y ejecutar 1 x 1, podrías usar explode con ";"
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 23/11/2011, 10:46
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Respuesta: Importar archivo.sql mediante PHP

me podrías explicar eso del explode?

gracias :)
  #4 (permalink)  
Antiguo 23/11/2011, 10:56
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Importar archivo.sql mediante PHP

¿que tan difícil es documentarse?

http://php.net/manual/es/function.explode.php
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 23/11/2011, 11:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Respuesta: Importar archivo.sql mediante PHP

Mis disculpas, lo que pasa es que había mirado lo de explode cuando me lo pusiste, pero no termine de entender bien cual era su uso, o como podia aplicarlo a mi caso, de todas formas seguire mirando a ver que saco en claro.

un saludo
  #6 (permalink)  
Antiguo 02/07/2012, 01:29
 
Fecha de Ingreso: julio-2012
Mensajes: 3
Antigüedad: 12 años, 4 meses
Puntos: 2
Respuesta: Importar archivo.sql mediante PHP

se que el tema ya es algo viejo pero creo que esto puede ser un aporte, agarre el código que mask15 pone arriba y lo modifique una cosa de casi nada, a mi me funcionó para importar cualquier base de datos en sql sin necesidad de poner uno a uno los query, bien sin más que decir pongo el código :)
Cita:
<?php
$conecta = mysql_connect('localhost', 'root', 'passs');
if (!$conecta) {
die('No conectat : ' . mysql_error());
}
$db_selected = mysql_select_db('base', $conecta);
if (!$db_selected) {
echo 'No es troba la base de dades',$db_selected,'<br/>';
die (mysql_error());
}
else {
$texto = file_get_contents("base.sql");
$sentencia = explode(";", $texto);
for($i = 0; $i < (count($sentencia)-1); $i++){
$db_selected = mysql_query ("$sentencia[$i];") or die(mysql_error());
}
}

?>
Donde base.sql es un archivo de texto plano con las sentencias sql, ojala le pueda servir a alguien :)
  #7 (permalink)  
Antiguo 02/07/2012, 08:03
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Importar archivo.sql mediante PHP

¿y que necesidad tiene reabrir un tema de hace más de 6 meses?, consulte las políticas del foro, si el hilo NO tiene actividad no hay sentido de reabrirlo, si tiene una duda concreta y el tema está cerrado cree un post nuevo y postee el link de referencia
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Etiquetas: mediante, mysql, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:51.