From: | "Fernando Hevia" <fhevia(at)ip-tel(dot)com(dot)ar> |
---|---|
To: | "'Fabian Sandoval'" <sql(at)transitofloridablanca(dot)gov(dot)co>, <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | RE: Problema con Copy to delimiter |
Date: | 2008-11-12 20:04:53 |
Message-ID: | 47DEB8B6D6A94281A4179BB997979FCB@iptel.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Ups. Tienes toda la razón, es solo para importar. Te pido disculpas por mi
error.
Me siento en el compromiso de ofrecer una solución alternativa, aunque
rudimentaria.
Supongamos exportas tu tabla al siguiente archivo con el delimitador '|':
campo_1|campo_2|campo_3|campo_4
campo_a|campo_b|campo_c|campo_d
Ahora puedes convertir estas filas en posiciones fijas con un simple awk:
awk -F'|' '{ printf("%-10s%-6s%-20s%-10s\n", $1, $2, $3, $4) }' mi_tabla.txt
> mi_tabla_fija.txt
El resultado será un archivo con posiciones fijas:
$ cat mi_tabla_fija.txt
campo_1 campo_2campo_3 campo_4
campo_a campo_bcampo_c campo_d
En el printf del awk notarás que voy poniendo el ancho para cada columna en
orden secuencial. Si el ancho es negativo entonces indico que el valor se
alinee a izquierda, si el ancho es positivo obtendré alineación a derecha.
El ejemplo aplica para 4 campos ($1 a $4), pero puedes ir agregando columnas
metiendo dentro de las comillas del printf la secuencia s<ancho>% por
cada nueva columna, y al final de la coma un $<nro_campo> por cada campo
adicional.
Si sabes programar, es trivial el ejemplo. Si te cuesta comprenderlo,
escribime por privado con tu caso completo y te ayudo a adecuar el awk.
Si no tienes disponible un Unix también me ofrezco a procesar tu archivo.
Saludos,
Fernando.
_____
De: Fabian Sandoval [mailto:sql(at)transitofloridablanca(dot)gov(dot)co]
Enviado el: Miércoles, 12 de Noviembre de 2008 14:59
Para: Fernando Hevia; pgsql-es-ayuda(at)postgresql(dot)org
Asunto: Re: [pgsql-es-ayuda] Problema con Copy to delimiter
Muchas gracias Fernando por el programa, le he estado mirando pero este es
para Importar , pasar de TXT a Postgres, pero lo que nesesito es lo
contrario que de la base de datos de Postgres a TXT, sin ningun delimitador
, por posicion y creo que este no me sirve, no se.
GRacias FErnando
2008/11/12 Fernando Hevia <fhevia(at)ip-tel(dot)com(dot)ar>
Fabian,
El comando copy no soporta la exportación a posiciones fijas. Si no le
especificás un delimitador fuerza un espacio.
Te recomiendo eches un vistazo a benetl (www.benetl.net
<http://www.benetl.net/> ) que es un ETL free para Postgres.
Saludos,
Fernando.
_____
De: pgsql-es-ayuda-owner(at)postgresql(dot)org
[mailto:pgsql-es-ayuda-owner(at)postgresql(dot)org] En nombre de Fabian Sandoval
Enviado el: Martes, 11 de Noviembre de 2008 17:22
Para: pgsql-es-ayuda(at)postgresql(dot)org
Asunto: [pgsql-es-ayuda] Problema con Copy to delimiter
Hola amigos tengo un problema con la EXPORTACION de postgres a archivos de
texto plano. Pues me piden un archivo de texto plano sin delimitadores, pero
cuando exporto con la siguiente consulta
copy (select * from tranp OFFSET 500 limit 50000) to
'c:/import/tablita.dat'
voy y miro el resultado y postgres me pone espacios en blanco entre las
columnas , entonces intento con esta consulta
copy (select * from tranp OFFSET 500 limit 50000) to
'c:/import/tablita.dat' delimiter ''
para que simplemente no me ponga delimitadores, pero me da error que,
obligatoriamente tengo que poner un carácter entre las comillas simples de
delimiter.
No se que hacer, pues me piden un archivo de texto plano sin delimitadores y
sin espacios, osea un archivo de texto plano por posiciones.
From | Date | Subject | |
---|---|---|---|
Next Message | marcos negrini | 2008-11-12 20:20:51 | RE: Problema con Copy to delimiter |
Previous Message | Emanuel CALVO FRANCO | 2008-11-12 20:03:59 | Re: PG Day |