Foros del Web » Programando para Internet » PHP »

Archivo de texto con contenido de db para restaurar

Estas en el tema de Archivo de texto con contenido de db para restaurar en el foro de PHP en Foros del Web. Hola amigos, he hecho un script que guarda en un archivo de texto los datos de una base de datos mysql entera con sus sentencias ...
  #1 (permalink)  
Antiguo 24/06/2009, 13:09
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Archivo de texto con contenido de db para restaurar

Hola amigos, he hecho un script que guarda en un archivo de texto los datos de una base de datos mysql entera con sus sentencias de forma:

create table tabla1
insert into

etc etc
Es decir, lo que quiero hacer es abrir ese archivo de texto mientras ejecuta las sentencias sql que se incluyen en él.

¿Cómo podría hacerlo?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #2 (permalink)  
Antiguo 24/06/2009, 13:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Archivo de texto con contenido de db para restaurar

Lee sobre filesystem

Cuando vayas leyendo cada linea solo tienes que llamar en cada linea que leas

mysql_query($linea) or die(mysql_error());
  #3 (permalink)  
Antiguo 24/06/2009, 13:39
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Archivo de texto con contenido de db para restaurar

todas las sentencias se ejecutan al mismo tiempo?

es una lo llama a traves de un navegador?

dependiendo si es por cada registro en el archivo una consulta entonces se podria ir imprimiendo el sql que se haga en cada consulta

saludos
__________________
www.ogallardo.com - Mi blog
  #4 (permalink)  
Antiguo 24/06/2009, 13:44
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Archivo de texto con contenido de db para restaurar

Verifica si este ejemplo te puede ayudar

http://www.forosdelweb.com/f18/mysql...8/#post2933238
  #5 (permalink)  
Antiguo 24/06/2009, 14:10
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Archivo de texto con contenido de db para restaurar

Gracias abimaelrc, pero he tenido muchos problemas. El problema principal es que el archivo de texto está tal que así:
Código:
CREATE TABLE `blocdenotas` (
  `id` int(11) NOT NULL auto_increment,
  `titulo` text NOT NULL,
  `texto` text NOT NULL,
  `fecha` datetime NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;

INSERT INTO `blocdenotas` VALUES ('1', '15960', 'Hola Omar.<br> para este propsito.<br><br>Un saludo y a ver qu hacemos ok?<br><br>Atentamente<br>Marcos Prez.', '2009-06-03 02:05:49');
INSERT INTO `blocdenotas` VALUES ('3', 'Citando a Koulos', '<b><i><br>Un saludo.', '2009-06-03 02:10:45');
INSERT INTO `blocdenotas` VALUES ('4', 'adios!', '<<br><br>Un saludo.', '2009-06-03 02:11:45');
INSERT INTO `blocdenotas` VALUES ('5', 'Citando a Koulos 2', '<bsaludo.', '2009-06-03 02:19:07');
INSERT INTO `blocdenotas` VALUES ('6', 'Makoki!', '<br><br>\" cachindios', '2009-06-03 22:00:08');
INSERT INTO `blocdenotas` VALUES ('9', 'URLs 2', 'Comillas <br><br>\"Entrecomillado\"', '2009-06-03 22:16:36');
INSERT INTO `blocdenotas` VALUES ('10', 'nuevo nombre', '', '2009-06-07 00:33:53');
INSERT INTO `blocdenotas` VALUES ('12', 'fasdfasd', '', '2009-06-07 01:58:17');
INSERT INTO `blocdenotas` VALUES ('15', '5418594984', '<652', '2009-06-08 20:40:00');




CREATE TABLE `cajeras` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `nombre` varchar(50) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;


INSERT INTO `cajeras` VALUES ('1', 'Manoli');
INSERT INTO `cajeras` VALUES ('2', 'Pepa');
etc etc
No me procesa ni la primera línea , que no contiene nada, pero si elimino esa línea y pasa a la primera instrucción, tampoco lo hace!!!!

Código PHP:
 <?
define
('SQL_HOST','localhost');
define('SQL_USER','*');
define('SQL_PASS','*');
define('SQL_DB','test');

//Connect to database
$conn mysql_connect(SQL_HOSTSQL_USERSQL_PASS) or die('No he podido conectarme a la base de datos.' "Error.");
mysql_select_db(SQL_DB,$conn);
$archivo=$_FILES['fichero'];

$directorioSubida="/*/*/*/*/paneldecontrol";
        
$tmp_name $_FILES["fichero"]["tmp_name"];
        
$name $_FILES["fichero"]["name"];
        
move_uploaded_file($tmp_name"$directorioSubida/$name");
$file file($name);

$i "";
foreach(
$file as $k => $v){
    
$v trim($v);
    if(!empty(
$v)){
        
$i .= $v."\n";
    }else{
        
$insert[] = $i;
        
$i "";
    }
}
$asieio=0;
$bool false;
foreach(
$insert as $kk => $vv){
    
$result mysql_query($vv);
    if(
$result){
        
$bool true;
    }else{
        echo 
"<b>Problemas con la linea que tiene esta informaci&oacute;n ($asieio).  Todos los query anteriores fueron a&ntilde;adidos a la base de datos.</b><br />"
        
nl2br($vv);
        
$bool false;
        break;
    } 
$asieio++;
}

if(
$bool){
    echo 
"<b>Se inserto toda la base de datos.</b>";
}
 
?>
La variable $asieio me devuelve 0 siempre, es decir, que no da ni una vuelta.

Qué puedo hacer?

Un saludo y mil millones de gracias.
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #6 (permalink)  
Antiguo 24/06/2009, 14:22
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Archivo de texto con contenido de db para restaurar

Puedes usar el foreach para que agregue en una variable array hasta que vea el caracter ; que se encuentra al final de ese statement. Una vez encuentre ese caracter, continuas con otra variable de array hasta que vuelva a encontrar ;.
  #7 (permalink)  
Antiguo 24/06/2009, 14:30
Avatar de wpersei  
Fecha de Ingreso: septiembre-2006
Ubicación: Bogota
Mensajes: 189
Antigüedad: 17 años, 7 meses
Puntos: 1
Respuesta: Archivo de texto con contenido de db para restaurar

Cita:
Iniciado por abimaelrc Ver Mensaje
Puedes usar el foreach para que agregue en una variable array hasta que vea el caracter ; que se encuentra al final de ese statement. Una vez encuentre ese caracter, continuas con otra variable de array hasta que vuelva a encontrar ;.

y que pasa si se encuentra con que en una de las cadenas de texto que inserta hay un ; entonces generaría un error en el sql cuando en realidad la sentencia si se encuentra

me pregunto si hay forma de modificar la forma de generar el archivo, cosa que se pueda colocar una cadena especial para generarla como delimitador de sentencias sql y poder aplicar un explode

para meter cada sentencia en un array y asi poder ejecutar una por una...

saludos
__________________
www.ogallardo.com - Mi blog
  #8 (permalink)  
Antiguo 24/06/2009, 14:33
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Archivo de texto con contenido de db para restaurar

No necesariamente. Puede buscar que el ultimo caracter sea el ;

Ejemplo

if(substr($palabra, -1) == ";") {
//codigo
}

Eso buscaria que sea el ultimo punto y coma y no que esta dentro de un string
  #9 (permalink)  
Antiguo 24/06/2009, 15:01
Avatar de CHuLoSoY  
Fecha de Ingreso: febrero-2002
Ubicación: Ribeira (Galicia)
Mensajes: 1.900
Antigüedad: 22 años, 2 meses
Puntos: 29
Respuesta: Archivo de texto con contenido de db para restaurar

Cita:
Iniciado por abimaelrc Ver Mensaje
No necesariamente. Puede buscar que el ultimo caracter sea el ;

Ejemplo

if(substr($palabra, -1) == ";") {
//codigo
}

Eso buscaria que sea el ultimo punto y coma y no que esta dentro de un string
Wow! Me puedes explicar esto? -1?
__________________
ESQUIO Dominios y Hosting
Las mejores características con los mejores precios.
  #10 (permalink)  
Antiguo 24/06/2009, 15:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: Archivo de texto con contenido de db para restaurar

Vamos a imaginar que estas almacenando la informacion del archivo en una variable llamada $palabra.

Ejemplo

Código PHP:
$palabra "INSERT INTO `blocdenotas` VALUES ('1', '15960', 'Hola Omar.<br> para este propsito.<br><br>Un saludo y a ver qu hacemos ok?<br><br>Atentamente<br>Marcos Prez.', '2009-06-03 02:05:49');";

if(
substr($palabra, -1) == ";") {
  echo 
"El ultimo caracter es " substr($palabra, -1);
}else{
  echo 
"continua con la siguiente linea";

Lo unico que tienes que hacer es colocar algo similar en el foreach para verificar si el ultimo caracter es ;. Sino es el punto y coma entonces el else se ejecuta y ahi haces una concatenacion para que cuando el foreach continue siga con la linea anterior.

Me dejas saber
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




La zona horaria es GMT -6. Ahora son las 22:07.