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

bash para insertar o actualizar en una base de datos

Estas en el tema de bash para insertar o actualizar en una base de datos en el foro de PostgreSQL en Foros del Web. Hola a todos podrian ayudarme quiero hacer un script en el cual insertar filas a una tabla de una base de datos postgres Alguna idea ...
  #1 (permalink)  
Antiguo 17/11/2009, 09:12
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
bash para insertar o actualizar en una base de datos

Hola a todos podrian ayudarme quiero hacer un script en el cual insertar filas a una tabla de una base de datos postgres

Alguna idea de como hacerlo?

atte
  #2 (permalink)  
Antiguo 17/11/2009, 09:43
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: bash para insertar o actualizar en una base de datos

Podrías ser mas explicito?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 17/11/2009, 09:58
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: bash para insertar o actualizar en una base de datos

quiero hacer un insert into tabla values(campo1,campo2);

pero desde un script de linux

#!/bin/bash
insert into tabla values(campo1,campo2);

de esa manera no funciona alguna idea muchas gracias

atte
  #4 (permalink)  
Antiguo 17/11/2009, 10:12
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: bash para insertar o actualizar en una base de datos

Ni idea.

Pero si te sirve de algo, se puede ejecutar desde la consola, un archivo ubicado en cualquier parte del disco.

Cita:
Entrada/Salida
\echo [CADENA] escribir cadena a salida estßndar
\i ARCHIVO ejecutar comandos desde archivo
\o [ARCHIVO] envÝar resultados de consultas a archivo o |comando
\qecho [CADENA] escribir cadena a salida de consultas (ver \o)
Con la opción \i

Si tienes en el archivo una secuiencia de inserts, el la ejecuta de esa forma.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 17/11/2009, 10:34
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: bash para insertar o actualizar en una base de datos

Lo que pasa que ese script quiero colocarlo en el cron y asi ejecutarlo periodicamente de todos muchas gracias por la atencion

saludos
  #6 (permalink)  
Antiguo 17/11/2009, 10:44
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: bash para insertar o actualizar en una base de datos

Es posible que dentro del cron puedas hacer algo con pg_restore. El archivo debe ser .sql.

Nos cuentas como te va.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 17/11/2009, 13:07
Avatar de Sergestux  
Fecha de Ingreso: agosto-2007
Ubicación: Tapachula
Mensajes: 1.218
Antigüedad: 17 años, 3 meses
Puntos: 20
Respuesta: bash para insertar o actualizar en una base de datos

Hago eso que dices pero con php solo tienes que llamar ese script desde el cron. No se si se pueda directamente desde el shell solo he visto ejemplos con otros lenguajes como python como este
  #8 (permalink)  
Antiguo 17/11/2009, 18:07
Avatar de xdrtas  
Fecha de Ingreso: junio-2008
Ubicación: Venezuela
Mensajes: 97
Antigüedad: 16 años, 5 meses
Puntos: 13
Respuesta: bash para insertar o actualizar en una base de datos

Hace tiempo que no me meto con scripts de bash, sin embargo, he hecho cosas parecidas y en teoría debería funcionar, te pongo un ejemplo que hice con un archivo BAT bajo windows que funciona perfectamente, y si funciona bajo windows, funciona bajo Linux/Unix:

Hice dos archivos
  1. Archivo TXT con la/s consultas, le puse el nombre de sql.txt.
    Código:
    INSERT INTO "Album" ("alb_ID", "alb_Titulo", "alb_Fecha", "alb_Descripcion") VALUES (nextval('"Album_alb_ID_seq"'), 'Titulo','17/11/2009'::date, 'Prueba bash');
    SELECT * FROM "Album";
    
  2. Archivo BAT para ejecutar el archivo, le puse de nombre sql.bat.
    Código:
    @echo off
    psql -d aikido -U postgres -f sql.txt
    

El archivo BAT está en el mismo directorio donde se encuentra la aplicación psql.

Ahora desde linux: si quieres ejecutar el sript de bash desde otra ruta, tendrías que usar el comando "cd" de linux para ubicarte, ejemplo:
Código:
#!/bin/bash
cd /etc/postgreSQL/bin/psql -d aikido -U postgres -f sql.txt
Si no quieres ejecutar la consulta desde un archivo externo, tienes la posibilidad de hacer lo siguiente:
Código:
#!/bin/bash
cd /etc/postgreSQL/bin/psql -d aikido -U postgres -c "INSERT INTO ""Album"" (""alb_ID"", ""alb_Titulo"", ""alb_Fecha"", ""alb_Descripcion"") VALUES (nextval('""Album_alb_ID_seq""'), 'Titulo','17/11/2009'::date, 'Prueba bash');"
El parámetro -f es para ejecutar las consultas almacenadas en un archivo y -c es para ejecutar la sentencia SQL desde psql sin entrar en el entorno del mismo.

cualquier duda psql --help y te aparecen los comandos básicos.

P.D: Perodoname si cometí algún fallo con los comandos en Linux, es que ahora mismo no me acuerdo.

Espero que te sirva. Te aseguro que bajo windows funciona, así que es cuestión de probarlo en Linux, que estoy 99% seguro de que funciona Saludos.
  #9 (permalink)  
Antiguo 18/11/2009, 11:49
 
Fecha de Ingreso: septiembre-2008
Mensajes: 75
Antigüedad: 16 años, 2 meses
Puntos: 1
Respuesta: bash para insertar o actualizar en una base de datos

Gracias por la sugerencia de python, lo use y pude generar mi script, el cual comparto con uds, bueno tuve que instalar el paquete

yum install python-psycopg2*


detalle del script

#!/usr/bin/python
import psycopg2
dsn="dbname=prueba host=localhost port=5432 user=postgres password=clave"
con=psycopg2.connect(dsn)
print "conectado...!"
cur=con.cursor()
s="insert into persona values('campo1','campo2');"
cur.execute(s)
print "Satisfactorio..!"
con.commit()
con.close()
print "Bye"

muchas gracias por la ayuda eternamente
  #10 (permalink)  
Antiguo 11/10/2011, 15:05
 
Fecha de Ingreso: noviembre-2008
Mensajes: 6
Antigüedad: 16 años
Puntos: 0
Respuesta: bash para insertar o actualizar en una base de datos

Hola, como puedo conectarme a un servidor postgreSQL remoto e insertar datos en una base de datos que se encuentre en ese servidor remoto usando un script bash???

es posible hacer esto? Por favor alguien ayudeme....

saludos
yordan
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 20:37.