Re: Leer un archivo desde una Funcion en Postgres

Lists: pgsql-es-ayuda
From: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 16:00:08
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola amigos.
quisiera saber si alguien ha realizado una función que lea un archivo (de
texto por decir) linea por linea y luego vacíe el contenido en una tabla, si
alguien ha hecho algo similar le agradecería bastante que me envíe un
ejemplo o si tienen un link donde puede encontrar informacion para realizar
esta función.
Tengo instalado Postgres 8.0.1 sobre RedHat 9.
Gracias por la ayuda que me puedan brindar


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 16:40:10
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 06/07/06, Walter Vera <vera(dot)walter(at)gmail(dot)com> wrote:
>
> Hola amigos.
> quisiera saber si alguien ha realizado una función que lea un archivo (de
> texto por decir) linea por linea y luego vacíe el contenido en una tabla, si

lo puedes hacer de varias formas, una es que si tienes tu archivo en
formato CSV puedes usar \copy dentro de psql

La otra forma es que crees tu mismo un script que saque los datos de
tu archivo y _hagas_ un mini parser y convierta todo a:

- Cada linea un INSERT
- Cada linea a formato CSV y despues usar \copy

la ultima te podria convenir en el caso de que tengas muchos
registros (miles) porque hacer \copy es mucho mas rapido que hacer un
INSERT por linea.

> Tengo instalado Postgres 8.0.1 sobre RedHat 9.

un script en python, por ejemplo, te bastaria bastar. AFAIK redhat
lo incluye.

--
http://www.advogato.org/person/mgonzalez/


From: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
To: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 17:07:27
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Mario:
en realidad lo que quiero es crear una función que lea el *logfile* de
postgres linea a linea y busque solo las instrucciones: *insert, update y
delete* ; y por cada una de estas intrucciones genere un registro en una
tabla. La idea es llamar la función desde una aplicacion de
auditoría desarrollada en PowerBuilder, la aplicacion se debe encargar de
mostrar la información en formato legible para un usuario común que no sabe
el lenguaje SQL. Para ser más especifico aún, la idea es mostrarle al
usuario auditor las modificaciones que se han hecho en la BD pero
directamente y no a traves de la Aplicación
Espero que haya dejado entender y que puedan ayudarme a lograr ésto.
Muchas Gracias.


From: "Roberto Andrade Fonseca" <randrade(at)inteligentes(dot)com(dot)mx>
To: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 17:58:46
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola Walter:

> Para ser más especifico aún, la idea es mostrarle al
> usuario auditor las modificaciones que se han hecho en la BD pero
> directamente y no a traves de la Aplicación
> Espero que haya dejado entender y que puedan ayudarme a lograr ésto.
> Muchas Gracias.

En el manual de PostgreSQL, en el capítulo de Pl/pgSQL, se encuentra una
función que ejemplifica la creación de una bitácora de modificaciones a
una base de datos.

La versión en español del manual la puedes encontrar en:

http://www.postgresql.org.mx/?q=node/16

revisa la página 29 de ese manual.

Saludos,
--
Roberto Andrade Fonseca
Director de Tecnología
Inteligentes.com, S.A. de C.V.
Tel. (55) 5207-1672 / 1673


From: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>
To: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
Cc: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 19:40:01
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 7/6/06, Walter Vera <vera(dot)walter(at)gmail(dot)com> wrote:
>
> Hola Mario:
> en realidad lo que quiero es crear una función que lea el *logfile* de
> postgres linea a linea y busque solo las instrucciones: *insert, update y
> delete* ; y por cada una de estas intrucciones genere un registro en una
> tabla. La idea es llamar la función desde una aplicacion de
> auditoría desarrollada en PowerBuilder, la aplicacion se debe encargar de
> mostrar la información en formato legible para un usuario común que no sabe
> el lenguaje SQL. Para ser más especifico aún, la idea es mostrarle al
> usuario auditor las modificaciones que se han hecho en la BD pero
> directamente y no a traves de la Aplicación
>

La utilización de triggers te ayudará más en tu problema, con las variables
TG_OP(la operación que lanzo el trigger INSERT,UPTDATE,DELETE),
TG_RELNAME(nombre de la tabla que llamo al trigger), y otras más que no
recuerdo bien, que creando una función que lea un archivo y este buscando
instrucciones.

Espero que haya dejado entender y que puedan ayudarme a lograr ésto.
> Muchas Gracias.
>
>
>


From: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
To: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>
Cc: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 20:03:01
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

2006/7/6, Linder Poclaba <linder(dot)poclaba(at)gmail(dot)com>:

>
>
> On 7/6/06, Walter Vera <vera(dot)walter(at)gmail(dot)com> wrote:
> >
> > Hola Mario:
> > en realidad lo que quiero es crear una función que lea el *logfile* de
> > postgres linea a linea y busque solo las instrucciones: *insert, update
> > y delete* ; y por cada una de estas intrucciones genere un registro en
> > una tabla. La idea es llamar la función desde una aplicacion de
> > auditoría desarrollada en PowerBuilder, la aplicacion se debe encargar de
> > mostrar la información en formato legible para un usuario común que no sabe
> > el lenguaje SQL. Para ser más especifico aún, la idea es mostrarle al
> > usuario auditor las modificaciones que se han hecho en la BD pero
> > directamente y no a traves de la Aplicación
> >
>
> La utilización de triggers te ayudará más en tu problema, con las
> variables TG_OP(la operación que lanzo el trigger INSERT,UPTDATE,DELETE),
> TG_RELNAME(nombre de la tabla que llamo al trigger), y otras más que no
> recuerdo bien, que creando una función que lea un archivo y este buscando
> instrucciones.
>

Lo de los Triggers me parece muy bueno, pero como mencioné anteriormente
principalmente quiero saber las modificaciones que se hicieron directamente
en la BD ya sea a traves del interprete de comandos *psql* o por una
herramienta grafica como *pgadmin *esto implica principalmente al dba y no a
un usuario comun, como el dba tiene control absoluto sobre la bd puede *
desactivar* un *trigger* y hacer la modificacion en una tabla y luego volver
a *activar* el trigger y el cambio realizado no se va a registrar en ningun
lado. Es por eso que creo que sería mejor leer esa informacion desde el log.

El sistema actual realiza un control sobre todas la modificaciones
realizadas pero desde es la misma aplicacion, el asunto el saber las
modificaciones que se han hecho sin utilizar la aplicación

> Espero que haya dejado entender y que puedan ayudarme a lograr ésto.
> > Muchas Gracias.
> >
> >
> >
>
>
>


From: "Mario Gonzalez" <gonzalemario(at)gmail(dot)com>
To: "Walter Vera" <vera(dot)walter(at)gmail(dot)com>
Cc: "Linder Poclaba" <linder(dot)poclaba(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Leer un archivo desde una Funcion en Postgres
Date: 2006-07-06 20:18:21
Message-ID: [email protected]
Views: Whole Thread | Raw Message | Download mbox | Resend email
Lists: pgsql-es-ayuda

On 06/07/06, Walter Vera <vera(dot)walter(at)gmail(dot)com> wrote:
> >
> > La utilización de triggers te ayudará más en tu problema, con las
> variables TG_OP(la operación que lanzo el trigger INSERT,UPTDATE,DELETE),
> TG_RELNAME(nombre de la tabla que llamo al trigger), y otras más que no
> recuerdo bien, que creando una función que lea un archivo y este buscando
> instrucciones.
>

En cuanto a rendimiento creo que es mucho mejor usar los logs y
ocupar un "parser" para extraer la informacion necesaria. Los triggers
se usan a nivel de consulta en cambio los logs ya fueron ocupados y no
entorpecen a otras consultas, por ultimo para lograr una mayor
independencia puedes copiarlos a otro directorio y ahi ejecutar tus
scripts.

>
>

--
http://www.advogato.org/person/mgonzalez/