-----Mensaje original-----
De: Marcelo Gulin <[EMAIL PROTECTED]>
Para: Mario Oroz <[EMAIL PROTECTED]>
CC: [EMAIL PROTECTED] <[EMAIL PROTECTED]>; [EMAIL PROTECTED]
<[EMAIL PROTECTED]>
Fecha: Viernes 19 de Enero de 2001 12:17
Asunto: Re: Sobre PHP
>Hola Mario
>
>
> Buscá el rpm (rpmfind.net) que agregà el módulo de Postgres a tu PHP.
> Sino bajate los fuentes de Apache/PHP/Postgres y compilá todo.
>
>saludos
>Marcelo Gulin
Marcelo:
Es lo que hice y me fue de maravilla, pero renege bastante y casi me puede,
pero lo logre.
El tema es que lo tuve que enlazar al modulo de pgsql para PHP de forma
estatica, como modulo de Apache, puesto que para hacerlo dinamico me estaba
dando uno problemas en cuanto a los fuentes de Apache.
Gracias.... :)
ACA va otra:
Porsion de uno de los archivos con extension .d que genera Progress para
exportar datos,
es un archivo plano de texto.
Debo formatearlo para que Postgresql me lo pueda importar con el comando:
COPY tabla FROM '/usr/card.d' USING DELIMITER '|';
El formateo lo hago con gawk y el script es:
gawk '/ /{ # con este primer filtro limpio unas lineas sin espacios que
crea progress en el armado del archivo .d al final del archivo.
for(n=1;n<NF;n++) # escaneo cada campo
gsub(/\?|""/,"\"\\N\"",$n); # reemplaza las fechas vacias
# y las cadena de texto vacias
gsub(/no/,"\"f\"",$n); # cambia el booleano no por f, aonque el Postgres
# reconose al 'no' como opcion
valida para el input.
gsub(/yes/,"\"t\"",$n);# Lo mismo que para 'no'
gsub(/^[0-9]+$/,"\"&\"",$n)"; # entrecomillo los datos numerico,
aca es donde
# tengo problemas al final de la linea,
# obviamente lo tendre con cualquier tipo de dato
# que este al final de la linea.
gsub(/.+\/.+\/.+/,"\"&\"",$n) # entrecomillo las fechas.
}
gsub(/" "/,"|"); # para toda la linea reemplazo por |
gsub(/"/,""); # principio y al final me queda la linea
# entrecomillada y con esto las elimino
print $0}' $1 # imprime la linea. $1 es el parametro del fi
y lo invoco:
# ./fi card.d > card.in
se que se puede optimizar y que a lo mejor hago mucho trabajo al cuete pero
me funco!
antes del filtro: (1 leane del archio card.d)
"120456" 4 3 0 0 100 "Nafta" 30/09/99 "" "" "" "NORMAL 40" "" "" "" "" "" ""
"" "" "" 4 0 0 100000 25000 0 0 25000 0 18/01/01 18/12/00 ? 8000 30000 30000
7000 14000 7000 ? ? ? ? 60000
"239656" 1 0 0 0 399 "Nafta" 23/12/99 "" "" "" "ROTELLA X 40" "" "" "" "" ""
"" "" "" "" 4 0 0 80000 70000 70000 70000 80000 70000 18/01/01 20/12/00
20/12/00 7000 30000 30000 7000 14000 7000 ? ? ? ? 80000
"379362" 8 0 0 0 302 "Nafta" 28/09/99 "" "" "" "NORMAL 40" "" "" "" "" "" ""
"" "" "" 4 0 0 39300 0 0 39300 0 0 28/09/99 ? ? 7000 30000 30000 7000 14000
7000 ? ? ? ? 39300
despues del filtro:
120456|4|3|0|0|100|Nafta|30/09/99|\N|\N|\N|NORMAL
40|\N|\N|\N|\N|\N|\N|\N|\N|\N|4|0|0|100000|25000|0|0|25000|0|18/01/01|18/12/
00|\N|8000|30000|30000|7000|14000|7000|\N|\N|\N|\N 60000(13, 10)
...
Como veran al final de la line antes del 60000 no se agrega el "|", esto es
porque no puedo lograr
que el filtro me lo encierre entre comillas ("60000"), debido a que el
numero tirnr ciertos
caracteres al final de la linea que me embroman el filtro que le paso a la
funcion gsub.
Como se daran cuenta estos caracteres son el salto de linea y el retorno de
carro
( puedo ver estos caracteres en el editor del mc y en el vi me figuran como
" ^M " ).
El tema es que si le agrego el pipe que falta e intento hacer que el COPY me
lo importe me salta un
erro, aunque el formato de la linea sea correcto.
Intente borrar ese caracter y urgando encontre que el vi me mostraba al
final de la linea ^M. y
con un comando de busqueda y sustitucion desde la linea de comandosdel vi
escribo:
:g/^M$/s// /g Lo que resulta en un borrado del caracter al final de la
line, esto
mara que aparesca el caracter ^M en el vi, tuve que tipear <contro-v> +
<enter> .
me resulto con un par de archivos, pero haora no se porque el vi no me
muestra estos caracteres(^M).
Prove incorporar esto en el filtro pero no me reconoce el ^M, La pregunta es
como lo coloco?
de que manera hago referencia a esos caracteres no imprimibles desde un
filtro gawk?, porque
desde el vi pude tipearlo y funciono la sustitucion global.
espero cualquier ayuda y desde ya muchas gracias, ( por leer hasta el
final:) )
Help, I need somebody, Help.... ( y nome acuerdo mas... :) )
card.d