From: | "Haroldo Stenger" <haroldo(dot)stenger(at)gmail(dot)com> |
---|---|
To: | "Haroldo Stenger" <haroldo(dot)stenger(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org, "Alvaro Herrera" <alvherre(at)dcc(dot)uchile(dot)cl> |
Subject: | Re: función csvstring_to_recordset |
Date: | 2006-07-23 01:28:40 |
Message-ID: | d33fde4e0607221828g1345575fne748fa78e49fe893@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Hola Alvaro
El 19/07/06, Alvaro Herrera<alvherre(at)commandprompt(dot)com> escribió:
> > CREATE OR REPLACE FUNCTION csvstring_to_recordset(text)
> > RETURNS SETOF text AS
> > $BODY$
> > select split_part($1, ',' , x.i) from (select
> > generate_series(1, (length($1)-length(replace($1, ',' , '' )) ) +1)
> > as i) x
> > $BODY$
> > LANGUAGE 'sql' IMMUTABLE;
>
> Hmm, que pasa si hay una coma dentro de un string rodeado por comillas?
>
> O sea esto
>
> "Perez, Pedro",204-5031,"Victoria St.,290"
>
> deben ser tres campos, no cinco.
No está contemplado :( El tema es, por un lado que la demanda original
no tenía campos entrecomillados, por lo cual para ese caso funcionó.
Por otro, este abordaje con funciones estándar de PostgreSQL de manejo
de strings, no parece ser el más adecuado, a menos que aparezca esa
mágica expresión regular que pueda ser puesta como separador a la
funcion split_parts (que me parece una "maravillosa" función :)
Encontré por ahí esta regex ,(?=([^"]*"[^"]*")*(?![^"]*"))
que todavía no intenté descifrar, que algo tiene que ver con el
formato CSV, aunque creo que en lugar de sevir como separador, sirve
como agrupador de los campos propiamente dicho, o sea el inverso de lo
que split_parts pide.
Esto lo tomé como un juego, y definitivamente sirve sólo para un caso
particular de CSV, y en caso de CSV full-syntax, no hay más remedio
que abordar el problema con cañones de mayor calibre.
un abrazo
Haroldo
--
b l o g http://reenunciadosrenunciados.blogspot.com/ b l o g
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Martínez | 2006-07-23 23:05:05 | Re: ayuda con query |
Previous Message | Javier Villalba | 2006-07-22 22:50:46 | Fwd: formato de fechas |