Foros del Web » Programando para Internet » PHP »

Uso de mysql_query()

Estas en el tema de Uso de mysql_query() en el foro de PHP en Foros del Web. Hola a todos, Estoy en el proceso de carga de datos. Lo que hago es coger toda la base de datos y desde phpMyAdmin me ...
  #1 (permalink)  
Antiguo 07/06/2010, 09:42
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Uso de mysql_query()

Hola a todos,

Estoy en el proceso de carga de datos. Lo que hago es coger toda la base de datos y desde phpMyAdmin me creo un archivo *.sql. El archivo pesa mas o menos 80 Mb. He leido por el foro, y muchos recomendais el uso de aplicaciones para hacer esto, pero a mi me gustaria desde el propio server realizar la carga del fichero. He leido sobre el uso de la funcion mysql_query(), y en especial usandola asi:

Código PHP:
mysql_query( include( 'fichero.sql') ); 
La idea es enviar via ftp el fichero y luego una vez en el server que se realizara la actualizacion de datos.

1.- Este proceso de actualizacion masiva es correcto ?
2.- Tiene alguna limitacion esta funcion en cuanto a tamaño de archivo ?

Muchas gracias por vuestros consejos.
Savi.
  #2 (permalink)  
Antiguo 07/06/2010, 09:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso de mysql_query()

te sugiero consultar el manual...
http://php.net/mysql_query
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 07/06/2010, 11:49
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Uso de mysql_query()

Todo lo que quieres se puede

mysql_query(file_get_contents("ruta_al/archivo.sql"));

Podrias crear varios archivos sql, quiza por db, para repartir el peso.

Luego haces una subida multiple, etc.

Se puede hacer de varias formas, ...pero debes aprender php.

Última edición por wiwi74; 07/06/2010 a las 18:46
  #4 (permalink)  
Antiguo 07/06/2010, 12:23
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Uso de mysql_query()

Cita:
Iniciado por wiwi74 Ver Mensaje
[...] mysql_query(include("archivo.sql"));

Es valido, yo lo hago. [...]
mmm...

pues que raro, porque se supone que un include no devuelve su contenido, lo incluye... ¿de verdad has hecho lo que argumentas??

porque acabo de hacer una prueba sencilla, y no resulta...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 07/06/2010, 16:37
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Uso de mysql_query()

Hola savi, disculpa, me equivoque de funcion.

Era file_get_contents() la que utilizaba dentro del la consulta, la cual te evitara copiar y pegar todo el codigo sql.

Código PHP:

mysql_query
(file_get_contents("ruta_al/archivo.sql")); 
Claro esta que previamete debes (con otra consulta) seleccionar la tabla hacia la cual realizaras la consulta. En sintesis: my similar a cuando usas texto dentro de mysql_query()

Saludos...!

Última edición por wiwi74; 07/06/2010 a las 16:54
  #6 (permalink)  
Antiguo 07/06/2010, 23:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Uso de mysql_query()

Hola,

Gracias por los comentarios.

- Wiwi74 gracias por la apreciacion. Encontre esta respuesta en el foro. Probare con file_get_contents().

- Pateketrueke, no probe la manera porque queria vuetro consejo. Resulta q segun el manual la funcion mysql_query no acepta multiples consultas y no entendia si se podia y si tenia alguna limitacion.

El objetivo es con un unico archivo, generado desde phpmyadmyn con un contenido similar a este,
Código PHP:
-- phpMyAdmin SQL Dump
-- version 2.7.0-pl1
-- http://www.phpmyadmin.net
-- 
-- 
Servidorlocalhost
-- Tiempo de generación26-05-2010 a las 14:05:38
-- Versión del servidor5.0.18
-- Versión de PHP5.1.1
-- 
-- 
Base de datos: `ferre`
-- 

-- --------------------------------------------------------

-- 
-- 
Estructura de tabla para la tabla `ped_cab`
-- 

DROP TABLE IF EXISTS `ped_cab`;
CREATE TABLE IF NOT EXISTS `ped_cab` (
  `
idint(10NOT NULL auto_increment,
  `
clientvarchar(10collate latin1_general_ci NOT NULL,
  `
txtvarchar(80collate latin1_general_ci NOT NULL,
  `
txt_fmgvarchar(80collate latin1_general_ci NOT NULL,
  `
data_creatimestamp NOT NULL default '0000-00-00 00:00:00' on update CURRENT_TIMESTAMP,
  
PRIMARY KEY  (`id`),
  
KEY `client` (`client`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci COMMENT='Comandes (Capçalera)' AUTO_INCREMENT=;

-- 
-- 
Volcar la base de datos para la tabla `ped_cab`
-- 

INSERT INTO `ped_cabVALUES (1'1009''Recai per la válvula''''2010-05-26 13:14:53');
INSERT INTO `ped_cabVALUES (2'xxxxx''??????''''2010-05-26 13:15:06');
INSERT INTO `ped_cabVALUES (3'1009''Recai de tornillos''Esvaleu en caixes de 20...''2010-05-26 13:44:12');
...
... 
Se podia cargar y procesar todas las ordenes. Quizas lo mejor se tratarlo y procesar entonces linea por linea...

Gracias a todos.
Savi
  #7 (permalink)  
Antiguo 08/06/2010, 08:18
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Uso de mysql_query()

Mas que linea por linea seria consulta por consulta, ya que no soporta multiples.

Un detalle: tampoco inserta todas las filas de una vez si en cada linea se escribe INSERT INTO (directamente falla)

Eso se soluciona asi:

Código PHP:

 
//puse '' en el primer campo ya que este es auto incremento
//y a los otros valores no los cambie por pereza, si el campo no es unique funciona

INSERT INTO ped_cab (id,client,txt,txt_fmg,data_creaVALUES 
('''1009''Recai per la válvula''''2010-05-26 13:14:53'),
(
'''1009''Recai per la válvula''''2010-05-26 13:14:53'), 
(
'''1009''Recai per la válvula''''2010-05-26 13:14:53'), 
(
'''1009''Recai per la válvula''''2010-05-26 13:14:53'), 
(
'''1009''Recai per la válvula''''2010-05-26 13:14:53'), 
(
'''1009''Recai per la válvula''''2010-05-26 13:14:53'); 


//incluso use $r=mysql_query(file_get_contents("sql.sql"));

//para separar las consultas si no deseas copiar y pegar
//quiza puedas usar expresiones regulares 
  #8 (permalink)  
Antiguo 08/06/2010, 13:18
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Uso de mysql_query()

wiwi74,

Gracias por el tip. Entonces el fichero que me crea phpmyadmyn no me va a servir para nada ? No hay manera de enchufarlo tal cual al server y que lo procese ?

Gracias.
Savi
  #9 (permalink)  
Antiguo 08/06/2010, 15:04
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 16 años, 1 mes
Puntos: 10
Respuesta: Uso de mysql_query()

Bueno si logras separar las consultas de manera dinamica, podrias, si.

En mi caso tengo en cada sql,una consulta. Parece poco una consulta. Pero no si se trata de insertar paises o localidades de algun partido.

Para que vayas viendo algo, puedes hacer algo asi.

Suponte que tienes todos los sql, en una carpeta, entonces la recorres:

Código PHP:


$files
=scandir("sqls/");
foreach(
$files as $file){
if(
$file != "." && $file != ".."){
//ejecutara la consulta que contenga cada sql
mysql_query(file_get_contents("sqls/".$file));
}


Bueno, suerte...
  #10 (permalink)  
Antiguo 09/06/2010, 07:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 63
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Uso de mysql_query()

wiwi74

Gracias

Etiquetas: Ninguno
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 23:02.