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

FOXPRO : Campos MEMO, exportar a .txt

Estas en el tema de FOXPRO : Campos MEMO, exportar a .txt en el foro de Bases de Datos General en Foros del Web. quiero exportar el contenido de un tabla .dbf de foxpro a un archivo tipo texto (.txt); pero no sé como pasar el contenido de los ...
  #1 (permalink)  
Antiguo 10/11/2003, 11:25
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
FOXPRO : Campos MEMO, exportar a .txt

quiero exportar el contenido de un tabla .dbf de foxpro a un archivo tipo texto (.txt); pero no sé como pasar el contenido de los campos de tipo memo; alguien me puede ayudar?
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
  #2 (permalink)  
Antiguo 10/11/2003, 13:37
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Eso si es complicado, una posible solución es que vayas leyendo registro por registro y creando por cada campo memo un archivo independiente utilizando como nombre la llave de tu registro para poder identificarlo.

Como ves no es difícil, lo complicado es buscar la forma de identificarlo para una exportación a una BD y extraer su contenido.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #3 (permalink)  
Antiguo 10/11/2003, 15:00
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
he creado una tabla adicional con la misma estructura y he adicionado cuatro campos de texto de 250 caracteres cada uno pues el campo memo que uso no excede los 1000 caracteres (van desde 100 a casi 1000 caracteres). y he construido un programa con el siguiente código:
Código PHP:
set memowidth to 125
set path to t
:d01geral
use rutas excl 
zap
appe from d00r0001 
for !empty(cdemp)
scan 
   c 
0
   a 
3
   
for x=1 to memlines(dsrut)
       if 
3
          c 
1
          a 
1
          d 
""
       
endif
       
campo "ds"+alltrim(str(c))
       
alltrim(mline(dsrut,x)) + " "
       
1
       repl 
&campowith d
   next
endscan 
si alguien necesita comentarios de lo que hace este código con gusto se las puedo hacer llegar...
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
  #4 (permalink)  
Antiguo 10/11/2003, 15:01
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
ah! me olvida decir que luego usaba el siguiente comando:
Código PHP:
copy to rutas sdf 
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
  #5 (permalink)  
Antiguo 10/11/2003, 15:03
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
¿Por qué el memowidth está en 125 y no en 250?
porque me daba problemas de pérdida de algunos caracteres
?????????? y esto por qué sucede?, no lo sé, la verdad...
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
  #6 (permalink)  
Antiguo 11/11/2003, 15:45
Avatar de BrujoNic
Super Moderador
 
Fecha de Ingreso: noviembre-2001
Ubicación: Costa Rica/Nicaragua
Mensajes: 16.935
Antigüedad: 22 años, 5 meses
Puntos: 655
Si solucionaste tu problema, coloca la solución porque no se exactamente que es lo que necesitas hacer y en internet vi varias cosas referente al memo de fox. Otra cosa, por favor indica que versión de fox estas usando.
__________________
La tecnología está para ayudarnos. No comprendo el porqué con esa ayuda, la gente escribe TAN MAL.
NO PERDAMOS NUESTRO LINDO IDIOMA ESPAÑOL
  #7 (permalink)  
Antiguo 11/11/2003, 16:38
Avatar de acervantes  
Fecha de Ingreso: agosto-2003
Ubicación: Madrid
Mensajes: 311
Antigüedad: 20 años, 8 meses
Puntos: 1
Problema y Solución al detalle

Problema : Tengo una tabla en foxpro 2.x (o visual foxpro 6.x, se aplica a ambas versiones) con la siguiente estructura (o diseño de registro):

campo tipo longitud
codrut caracter 6 posiciones
refrut caracter 20 posiciones
desrut memo ? posiciones (4 ó 10)

esta tabla guarda rutas de servicio de transporte urbano; el campo desrut, contiene la ruta por calles que seguira cada línea de transporte urbano (supongamos que el tamaño oscila entre 100 y 1000 caracteres). Ahora, necesito pasar el contenido de esta tabla a MySql; para tales efectos utilizo los siguientes comandos en FoxPro:

Código PHP:
use tabladerutas 
copy to rutasparamysql sdf
close data 
el problema es que el archivo de texto creado no tiene el campo desrut (de vital importancia en esta tabla).

Solución :
creo una tabla (.dbf) intermedia con la siguiente estructura:

campo tipo longitud
codrut caracter 6 posiciones
refrut caracter 20 posiciones
desru1 caracter 250 posiciones
desru2 caracter 250 posiciones
desru3 caracter 250 posiciones
desru4 caracter 250 posiciones

nota : sólo 4 campos porque el campo dsrut nunca excede 1000 caracteres.

Código PHP:
set memowidth to 125  && el ancho que tendrá cada línea extraída del campo memo (125 caracteres ¿quién sabe por qué?, a 250 se truncaban algunas palabrasa 125 hay que crear un pequerño artificio/algoritmo pero funciona bien).
set path to caminotablas
use interm_rutas exclusive
zap
appe from original_rutas 
for !empty(cdemp)  && en las tablas que usaba existían algunos campos cdemp en blanconormalmente no debe de darse al ser clave de la tablaen fin pregunten al área de sistemas
scan    
&& examinar registro a registro toda la tabla
   c 
&& para usar los campos dsru1, ..., dsru4
   a 
&& 125 car 125 car 250 caracteres
   
for x=1 to memlines(dsrut)  && cuantas líneas de memo hay (de 1 a 4 mínimo 100máximo 1000 caracteres)
       if 
3
          c 
1
          a 
1
          d 
""  && concatena contenido de campos dsru"x"
       
endif
       
campo "ds"+alltrim(str(c))   && campo dsru"x" a actualizar
       d 
alltrim(mline(dsrut,x)) + " "   && espacio en blanco al final para separar palabras
       a 
1   && necesita comentario?, es un contador de cocina
       replace 
&campowith d   && reemplaza de memo a dsru"x"
   
next
endscan

copy to txt_rutas_paraMySql sdf
clos all 
luego desde mysql admin:

Código PHP:
load data local infile 'txt_rutas_paraMySql.txt' into table rutas fields terminated by ''
pero eso es tema de otro foro...

PD: es una solución académica, de cocina o como la quieran llamar; mi consulta estaba orientada a no usar este metodo sino de frente una sola instrucción COPY TO :::: SDF...

(SE ENTIENDE????)
__________________
ACervantes

[El éxito dura hasta que alguien las caga; los errores son eternos]
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




La zona horaria es GMT -6. Ahora son las 04:42.