Foros del Web » Programando para Internet » PHP »

leer consultas de mas de 300 campos

Estas en el tema de leer consultas de mas de 300 campos en el foro de PHP en Foros del Web. hola, alguien puede ayudarme. necesito hacer un archivo cvs con una consulta de mas de 300 campos, logico se alimenta de unas 20 tablas, uso ...
  #1 (permalink)  
Antiguo 16/12/2008, 22:45
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
leer consultas de mas de 300 campos

hola, alguien puede ayudarme.

necesito hacer un archivo cvs con una consulta de mas de 300 campos, logico se alimenta de unas 20 tablas, uso adodb y oracle pero cuando ejecuto el script este se queda y no hace nada. se que esto es por la cantidad de datos no es capaz de procesarlo.

la consulta la converti a una vista y no tengo problemas, el oracle la lee bien.

estado pensando en crear un pl/sql que me lea la vista y me exporte el archivo, poder ejecutar el pl/sql desde php y cuando termine darle la posibilidad al usuario de descargar el archivo; pero no se como hacerlo.

alguien tiene una idea mejor o me puede orientar como realizarlo

gracias
  #2 (permalink)  
Antiguo 16/12/2008, 22:50
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: leer consultas de mas de 300 campos

Checa la directiva max_execution_time en tu php.ini, es probable que de ahi venga el error.

Saludos.
  #3 (permalink)  
Antiguo 16/12/2008, 23:04
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: leer consultas de mas de 300 campos

si ya la revise y la configure a 900 (15 min), tambien subi memory_limit a 256M pero no pasa nada solamente se queda como si no existiera nada mas
  #4 (permalink)  
Antiguo 16/12/2008, 23:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: leer consultas de mas de 300 campos

Haz revisado si te marca algo en el error_log?

Saludos.
  #5 (permalink)  
Antiguo 16/12/2008, 23:22
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: leer consultas de mas de 300 campos

solo sale estas lineas

Cita:
[Wed Dec 17 00:15:57 2008] [error] [client 127.0.0.1] File does not exist: C:/AppServ/www/loading.html, referer: http://localhost/proyectomen/men/prueba.php
[Wed Dec 17 00:17:05 2008] [error] [client 127.0.0.1] File does not exist: C:/AppServ/www/loading.html, referer: http://localhost/proyectomen/men/prueba.php
[Wed Dec 17 00:18:37 2008] [error] [client 127.0.0.1] File does not exist: C:/AppServ/www/loading.html, referer: http://localhost/proyectomen/men/prueba.php
[Wed Dec 17 00:21:20 2008] [error] [client 127.0.0.1] File does not exist: C:/AppServ/www/loading.html, referer: http://localhost/proyectomen/men/prueba.php
pero no veo ningun error grave pero no funciona aun el script
  #6 (permalink)  
Antiguo 17/12/2008, 00:11
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: leer consultas de mas de 300 campos

Mmm y estas seguro que es la cantidad de datos? Prueba reproducir el script con solo 1 tabla y ve que pasa.

Saludos.
  #7 (permalink)  
Antiguo 17/12/2008, 00:47
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: leer consultas de mas de 300 campos

mira este es un ejemplo de como ejecuto la consulta

Cita:
<?
//$sql="SELECT * FROM NOMBRE_VISTA";
$sql="select * from partec";
if (is_file(dirname(__FILE__) . "/logicalbox/integrador.php")){
include (dirname(__FILE__) . "/logicalbox/integrador.php");
}
$db = NewADOConnection(_dbdriver);
$db->Connect(_host, _username,_password,_sid);
$db->debug=true;
$rs = $db->Execute($sql);
$totalreg = $rs->RecordCount();
?>
<html>
<head>
</head>
<body>
<?
echo $totalreg;
?>
<br />
</body>
</html>
aqui no presenta problemas ademas si uso un sql de estos:

Cita:
SELECT V.FECHAENCUESTA AS FECHA_DI, V.IDTIPODOCUMENTO AS TIPO_DOC, V.NUMDOCUMENTO AS IDCEDUL, V.PROCESO AS COMPLETA, V.IDENCUESTA AS ID_ENCFI, O.CODIGOIES AS CODINST, E.IDNUCLEO AS CODNBC, D.IDPROGRAMA AS PRO_CONS,
D.ANNOGRADO AS ANOGRAD, D.SEMESTREGRADO AS SEMGRAD, S.PRIMERNOMBRE AS NOMBRE1, S.SEGUNDONOMBRE AS NOMBRE2, S.PRIMERAPELLIDO AS APELLI1, S.SEGUNDOAPELLIDO AS APELLI2, V.IDPAIS AS PAISRES, V.IDMUNICIPIO AS MPIORES,
V.TELEFONOFIJO AS TELFIJO, V.CELULAR AS TELMOVIL, V.EMAIL1, V.EMAIL2
FROM DATOSVARIABLES V
LEFT JOIN DATOSFIJOS D ON V.IDTIPODOCUMENTO = D.IDTIPODOCUMENTO AND V.NUMDOCUMENTO = D.NUMDOCUMENTO
INNER JOIN PROGRAMA P ON D.IDPROGRAMA = P.IDPROGRAMA AND D.IDMETODOLOGIA = P.IDMETODOLOGIA
INNER JOIN ESPECIFICIDAD E ON P.IDESPECIFICIDAD = E.IDESPECIFICIDAD
INNER JOIN PROGRAMAIES O ON P.IDPROGRAMA = O.IDPROGRAMA AND P.IDMETODOLOGIA = O.IDMETODOLOGIA
INNER JOIN PERSONA S ON D.IDTIPODOCUMENTO = S.IDTIPODOCUMENTO AND D.NUMDOCUMENTO = S.NUMDOCUMENTO
aunque para que me ejecute el anterior sql le aumente la memoria con estas lineas

ini_set('max_execution_time','30');
ini_set('memory_limit','256M');

pero no puedo dejar el server sin memoria para poder reproducir mi consulta de mas de 300 campos.

probe con :

ini_set('max_execution_time','1000');
ini_set('memory_limit','1024M');

y si funciona pero si los registros aumentan?, ahora son 9443.
  #8 (permalink)  
Antiguo 17/12/2008, 07:03
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: leer consultas de mas de 300 campos

Utiliza el cache de consultas de MySQL, eso deberia incrementar considerablemente el desempeño de tu consulta.
Sino, utiliza un paginador.
  #9 (permalink)  
Antiguo 17/12/2008, 08:11
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: leer consultas de mas de 300 campos

la base de datos es oracle y lo del paginador me suena el problema es que el resultado no es a pantalla si no a un archivo csv y el usuario que pide el informe tendría que seleccionar de nuevo la ejecución del script para cada segmento de la paginación, eso no lo volvería algo tedioso??

alguna idea ???
  #10 (permalink)  
Antiguo 17/12/2008, 11:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: leer consultas de mas de 300 campos

Pues puede ser un problema de tu clase que usas para conectarte y ejecutar tu consulta, necesitas una en la que puedas ir liberando memoria conforme la imprimas, ya que es probable que el cuello de botella sea la libreria que usas.

Te recomiendo le heches una leida a PDO.

Saludos.
  #11 (permalink)  
Antiguo 17/12/2008, 17:02
Avatar de jfonseca  
Fecha de Ingreso: junio-2006
Mensajes: 8
Antigüedad: 17 años, 10 meses
Puntos: 0
Respuesta: leer consultas de mas de 300 campos

existe una solución pero la verdad no se como hacerla.

es crear una vista con la setencia sql y que esta sea llamada desde un procedimiento o un pl/sql y ahi se genere el archivo csv y solo desde php mandar a llamar el procedimiento y que retorne que termino para poder descargar el archivo usando php. asi se ahorraria mucho recurso pero la verdad no se como hacerlo.

alguien ya lo ha hecho ??? que pueda ayudarme


gracias
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 03:23.