Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Copy en Postgres a partir de URL

Estas en el tema de Copy en Postgres a partir de URL en el foro de PostgreSQL en Foros del Web. Buenas dias comunidad, Hola todos, quiero realizar un COPY pero tengo el siguiente incoveniente, quiero acceder a al archivo en donde están los datos a ...
  #1 (permalink)  
Antiguo 29/07/2013, 13:21
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Copy en Postgres a partir de URL

Buenas dias comunidad,

Hola todos, quiero realizar un COPY pero tengo el siguiente incoveniente, quiero acceder a al archivo en donde están los datos a insertar usando una URL al archivo (YA QUE NO PUEDO ACCEDER AL DIRECTORIO O RUTA ESPECIFICA), en este caso porque mi base de datos y el servidor web donde esta el archivo ESTAN EN MAQUINAS DISTINTAS

Nromalmente se colocaria un una ruta en servidor pero en este caso quiero acceder desde otro entonces hagolo siguiente
COPY mi_tabla(x, y, z) FROM 'http://milocalhost/archivo.csv' WITH DELIMITER ',' CSV HEADER

pero me da el error: No se Puede Acceder al archivo

¿Como puedo acceder al archivo si este se encuentras en una maquina diferente a la de mi base de datos -- usos postgreSQL? si tiene otra idea bienvenida se .. gracias
  #2 (permalink)  
Antiguo 29/07/2013, 13:31
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Copy en Postgres a partir de URL

Creo que no es posible. Sin embargo, el error es claro al decir que no es posible acceder al archivo.
Te recomiendo bajarlo por url a la maquina y hacerlo localmente. O solicitar al dueño de la maquina ejecutar dicha sentencia.

o bien, que te regale una copia del archivo.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 29/07/2013, 13:55
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Copy en Postgres a partir de URL

Voy contextualizarte es un proyecto Web, y el archivo que se guarda en apache(servidor 1) es subido, por el usuario, hago conexion a postgresql(esta en servidor 2) por ende no puede hacerse el COPY, estoy usando PHP, me interesa saber eso que dices, como descargarlo al servidor 2 donde esta postgres usando un script PHP? y asi lograr leerlo

Gracias por tu aporte

Última edición por j7011m; 29/07/2013 a las 14:05
  #4 (permalink)  
Antiguo 29/07/2013, 15:02
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Copy en Postgres a partir de URL

Hola de nuevo,

intente mover el archvo que tengo en mi apache web server1 a mi server2 donde esta postgresql y es que realiza el COPY sql en una tabla

para realizar el movimiento o copia de un servidor a otro hago lo siguiente:

copy('C:/ms4w/Apache/SERVER1/archivo.csv', 'http://IPSERVER2/archivo.csv');

pero me da el siguiente Error:
copy(http://IPSERVER2/archivo.csv): failed to open stream: HTTP wrapper does not support writeable connections

En cambio si realizo el movimiento en la mismo server es exitoso:
copy('C:/ms4w/Apache/htdocs/archivo.csv', 'C:/ms4w/archivo.csv);

Alguien sabe la causa del error? Gracias

Última edición por j7011m; 29/07/2013 a las 15:22
  #5 (permalink)  
Antiguo 30/07/2013, 06:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Copy en Postgres a partir de URL

Cita:
Alguien sabe la causa del error?
No es un error. Es altamente probable que sea un tema de permisos en el host. Ningún hosting que se precie de tener seguridad permite acceder en remoto para sacar o poner archivos. Piensa que eso es lo que hacen los hackers y los virus... ¿lo tuviste en cuenta?
Consulta con el administrador o el soporte técnico del host donde está el archivo, para ver qué tienes que hacer para poder realizar lo que pretendes.
Personalmente, no creo que te dejen hacerlo en ese modo. Es muy probable que sea mejor implementar algún tipo de webservice en ese site que te permita generar ese tipo de transferencias.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 30/07/2013, 07:50
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Copy en Postgres a partir de URL

Deacuerdo con gnzsoloyo.
Yo buscaría la forma de obtener acceso vía FTP. Y un pequeño codigo en java o cualquier lenguaje de programación para jalarlo, guardarlo y ejecutar la tarea que necesitas una vez ya lo tengas en local.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 31/07/2013, 09:34
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Pregunta Respuesta: Copy en Postgres a partir de URL

Muchísimas Gracias por su respuesta, intente lo que dice el amigo huesos52 por ftp y no tuve exito, lo de usar Java para leerlo y manejar el archivo no lo considero eso ya lo logro manejar en php, aqui el problema es moverlo para que sea accesible a postgres.

Vale la pena decir que cambie esto en el php.ini del apache del server 2 donde: quiero mover el archivo:
; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On


Una SOLUCION seria realizar el insert directamente en php y no hacer el copy(ya que postgres no esta en la misma maquina de apache que es donde guardo el archivo, y es imposible por requerimientos moverlos a la misma maquina), nose si me este complicando la vida

La verdad no soy muy bueno en programacionamacion gustaría saber como puedo hacer un query en cual haga un insert multiple en una tabla especifica(SIN COPY) una vez puedo acceder al archivo, que tiene una cabecera que son las columnas seguido de las demás lineas que son lo registros.

El archivo csv viene de la forma
x,y,z
2,4,6
2,5,3

Gracias por sus aportes
  #8 (permalink)  
Antiguo 31/07/2013, 09:40
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Copy en Postgres a partir de URL

Cuando haces esto:

Código SQL:
Ver original
  1. INSERT INTO tu_tabla SELECT tus_campos FROM otrastablas;

Todo el resultado de la consulta se va de forma masiva para la tabla. Hay que tener en cuenta que el numero y tipos de campos que tenga la consulta debe coincidir con la estructura de la tabla.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 31/07/2013, 09:46
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Copy en Postgres a partir de URL

Si entiendo Huesos pero como se realiza si debo leer un archivo ... ahi otra opcion de hacerlo sin hacer el COPY que es que en este momento me tiene estancado?

Gracias!!
  #10 (permalink)  
Antiguo 31/07/2013, 09:57
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Copy en Postgres a partir de URL

Cuando le das la url con la ubicacion del archivo (www.mipagina.com/miarchivo.csv) desde cualquier maquina puedes descargar el archivo sin problemas?

Entiendo tu problema, pero se sale de tema de bases de datos y pasaria a ser un problema de programación, que por tus comentarios anteriores etiendo es PHP.

Te recomiendo que preguntes en el foro de PHP la forma de leer un archivo csv desde una URL.
Una vez lo puedas leer, lo puedes recorrer con un ciclo y llevar los datos a la BD. Pero como te digo.. el como lo encuentras en dicho foro.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 31/07/2013, 10:03
 
Fecha de Ingreso: septiembre-2011
Mensajes: 16
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Copy en Postgres a partir de URL

mmm ... pues aqui en este caso ya no se accederia al csv desde url sino directamente desde un directorio de apache en donde esta el archivo(de alli puedo aleerlos sin ningun problema) .... el inconveniente es hacer el insert sin el COPY ... aun sigue siendo un tema de base de datos porque lo que necesito hacer es query SQL tipo insert no?

Saludos.
  #12 (permalink)  
Antiguo 31/07/2013, 10:20
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Copy en Postgres a partir de URL

j7011m

Entiendo que tienes un servidor apache y en otra maquina diferente un servidor postgresql.
Si puedes leer el directorio de apache, igual tienes que establecer una comunicación con el servidor de bases de datos para llevar los datos de tu archivo a la BD.

Esa comunicacion como te lo dijimos en post anteriores puede ser por varias vias:
FTP
Samba
SFTP
Un progrma en cualquier lenguaje de programación (PHP en tu caso con las librerias OCI)

Una vez tienes solucionado el tema de la comunicación, (asumamos que es un programa en php) debes hacer una rutina que lea este archivo. con ciclos for, while, do while recorres el archivo y con la comunicación que ya tienes con la base de datos harías los inserts.

Todo esto, ya no es de bases de datos.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Etiquetas: copy, postgres, url
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 00:11.