FoxPro/Visual FoxPro - Importar TXT a DBD

   
Vista:

Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 05/09/2009 05:23:00
Hola Amigos:

Tengo un archivo TXT, el cual me lo entregan en el siguiento formato:

20492397221|20500824651|20133604248|10090545524|20100194057|.........

es decir los numeros vienen uno al lado del otro, quiero importar esto, pero considerando que luego del caracter "|" es otro Registro.

Como hago para insertar esto en VFP
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Mauricio

Importar TXT a DBD

Publicado por Mauricio (1367 intervenciones) el 05/09/2009 15:04:57
Crea una tabla con los campos por ejemplo:
campo1 n(11), fill c(1), campo2 n(11) y asi sucesivamente.
luego abres esta tabla y le das el comando:
APPEND FROM texto TYPE XLS
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 05/09/2009 15:35:01
???????????

Disculpa, pero no te entiendo, la tabla debe tener un unico campo, el archivo es TXT, no Excel,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio

Importar TXT a DBD

Publicado por Mauricio (1367 intervenciones) el 05/09/2009 18:28:29
Tienes razon Roberto disculpa mi torpeza, pero asi a golpes sigo aprendiendo, eso es lo bueno y me dedico mucho a leer la ayuda, '|'
mi equivocacion fue una sola palabra XLS.
*
*
Crea una tabla con los campos por ejemplo:
campo1 n(11), fill c(1), campo2 n(11) y asi sucesivamente.
luego abres esta tabla y le das el comando:
APPEND FROM texto TYPE SDF DELIMITED WITH '|'
Espero que ahora si te funcione!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 05/09/2009 18:37:11
Bueno amigo sigo sin resolver el problema,

El archivo de texto tiene esta estructura:
20492397221|20500824651|20133604248|10090545524|20100194057|20516037593|21527311862|20512046990|10239540219|20112108443|20400089387|20986372568|20101634275|20167951276|21358002391|20344663547|10238262537|20504106727|10239867955|20278340449|20527992647|10238397244|20508995031|20521369861|20517952060|10249479539|

Si te fijas los registro estan uno al lado de otro, y no uno debajo de otro, no puedo crear la estructura que indicas porque no se cuantos campos deberia crear, ya no se la longitud del archivo de texto.

Lo que necesita es alguna forma que me permita que luego de identificar el caracter "|" haga un Insert, es decir se agrege otro registro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por andy (6 intervenciones) el 05/09/2009 17:37:54
Creas una tabla temporal con el formato como indica Mauricio, con un campo intermedio para tomar el caracter '|' y luego lo tomas con

APPEND FROM miarchivo TYPE SDF

Luego podras pasarla a otra tabla (sin el campo donde has tomado el el caracter '|')
y la tomas directamente con :
APEND FROM TablaTemporal
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 05/09/2009 18:05:12
Mi estimado amigo:

Me parece no has entendido mi problema, la estructura del archivo es de la siguiente manera:

20492397221|20500824651|20133604248|10090545524|20100194057|20516037593|21527311862|20512046990|10239540219|20112108443|20400089387|20986372568|20101634275|20167951276|21358002391|20344663547|10238262537|20504106727|10239867955|20278340449|20527992647|10238397244|20508995031|20521369861|20517952060|10249479539|

Asi se me presenta el archivo es decir los registro estan en una sola linea, el comando que me indicas solo me agrega el primer registro, los registros estan uno a continuacion del otro y no uno debajo de otro, mi pregunta es como hago, para luego de identificar el caracter especial "|" hago un Insert es decir se grabe otro registro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Williams Vidal (85 intervenciones) el 05/09/2009 22:53:38
Hola:
Yo lo haria asi; digamos que la primera linea contiene 9 registros, y que mi archivo txt contiene N lineas:

**Creo 2 tablas:
create table Tabla1 (Micampo c(255))
create table Tabla2 (campofin c(11))

** Haces el appen a la TABLA1 como indican los compañeros anteriores
** Luego creas un bucle

sele Tabla1
SCAN
x_cam1 = subs(Micampo,1,11)
x_cam2 = subs(Micampo,13,11)
x_cam3 = subs(Micampo,25,11)
x_cam4 = subs(Micampo,37,11)
x_cam5 = subs(Micampo,49,11)
x_cam6 = subs(Micampo,51,11)
x_cam7 = subs(Micampo,63,11)
x_cam8 = subs(Micampo,75,11)
x_cam9 = subs(Micampo,87,11)
sele TABLAa2
inse into TABLA2 (campofin) values (x_cam1)
inse into TABLA2 (campofin) values (x_cam2)
inse into TABLA2 (campofin) values (x_cam3)
inse into TABLA2 (campofin) values (x_cam4)
inse into TABLA2 (campofin) values (x_cam5)
inse into TABLA2 (campofin) values (x_cam6)
inse into TABLA2 (campofin) values (x_cam7)
inse into TABLA2 (campofin) values (x_cam8)
inse into TABLA2 (campofin) values (x_cam9)
ENDSCAN

Claro con un FOR te evitas muchas lineas, pero al menos te doy la idea.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 06/09/2009 03:43:19
La idea esta buena el problema es que la primera columna podria contener hasta 100 registros multiplicados x 11, me da 1100, lo que hace imposible que cree un campo con esa longitud
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por xx (378 intervenciones) el 06/09/2009 21:25:47
pues lo unico que te va a funcionar es
abrir el txt con FOPEN()
creas un bucle que lea un registro por ves con
FREAD() pasandole la longitud del registro unos 11 caracteres o lo que sea que mida un registro de tu txt, luego de leerlo lo copias en una tabla, y el bucle se rompa o finalice cuando llegue el fin de archivo.
y por ultimo FCLOSE()

CREATE TABLE MITABLA.DBF (LINEA C(11,0))
_han=FOPEN( [ARCHIVO.TXT] )
IF FERROR()!=0 OR _han==-1
MESSAGEBOX( [CAN'T OPEN TXT FILE],16,[ERROR])
ENDIF
DO WHILE FERROR()==0
_linea=FREAD( _han, 11)
IF LEN(ALLTRIM(_linea))!=11
MESSAGEBOX([WRONG READ],16,[ERROR])
ENDIF
INSERT INTO TABLE MITABLA (LINEA) VALUES (_linea)
ENDDO
FCLOSE( _han )
*LISTO!!
* SI NO ES 11 LA LONGITUD DE TU REGISTRO CAMBIAR TODAS LAS PARTES POR LA LONGITUD CORRECTA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por Roberto Lemos (6 intervenciones) el 07/09/2009 01:19:50
Gracias amigo, era lo que buscaba, le hice unos cambios y me funciono perfecto.

Saludos

Lemos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Importar TXT a DBD

Publicado por xx (378 intervenciones) el 07/09/2009 00:54:04
te muestro uno facilito, consiguete un buen editor binario editas tu fichero y reemplazas el caracter | con chr(13)+chr(10) y listo el pollo lo importas como te comentaron los amigos de arriba
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar