Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Levantar un archivo txt y salvarlo en una tabla IB (https://www.clubdelphi.com/foros/showthread.php?t=19952)

tulio 31-03-2005 21:31:09

Levantar un archivo txt y salvarlo en una tabla IB
 
Hola Foro

Tengo un archivo txt con un diseño de registro, y quisiera saber la forma de pasarlo con un select o la forma que sea a una tabla de Interbases.

Saludos y gracias por su atencion

lgarcia 31-03-2005 21:47:19

Levantar un archivo txt para una tabla IB
 
Hola

En este caso el fichero txt debe tener algun formato para poder leerlo y luego irlo insertando en la BD. A continuacion te muestro un codigo que te puede servir aunque te recomiendo mejor si puedes llevar los datos a Excel porque es mas eficiente. Te lo digo por experiencia propia.

Codigo

procedure TFormMenu.Clientes1Click(Sender: TObject);
var
s, v, nombre, codigo: string;
x, l: Integer;
begin
if OpenDialog.Execute then
begin
s:= ExtractFileName(OpenDialog.FileName);
AssignFile(F, s);
Reset(F);
while not Eof(F) do
begin
Readln(f, v);
l:= length(v);
x:= pos(';', v);
nombre:= copy(v, 1, x-1);
v:= copy(v, x+1, l);
x:= pos(';', v);
l:= length(v);
codigo:= copy(v, 1, x-1);
with InsertarClientes do
begin
Close;
Parameters.ParamByName(@nombre').Value:= nombre;
Parameters.ParamByName(@codigo).Value:= codigo;
Prepared:= True;
ExecProc;
end;
end;
CloseFile(F);
ShowMessage(' El lote de clientes ha sido importado exitosamente');
end;
end;

Donde
F:Text;
InsertarClientes es un procedimiento almacenado
Los delimitadores del fichero texto en este caso es ;

Espero te sirva

Saludos
Luis Garcia

AGAG4 01-04-2005 02:40:15

mira....
 
Podrías señalar como es la estructura del archivo de texto, ó bien pon un pedazo del mismo para verlo.....

Para un archivo de texto es más sencillo pasarlo a interbase por medio de un table, dataset, query, etc. teniedo una estructura delimitada por comas ó por cualquier caracter.

Saludos.

tulio 01-04-2005 12:21:39

Gracias

LGarcia y Alfredo por su colaboracion, voy a probar sus consejos,

saludos

tulio

tulio 01-04-2005 12:24:56

Alfredo

la estructura del archivo es asi

15487 1033 JUAN E1
15490 1050 PEDRO S1
15500 1070 ANTONIO E1

SALUDOS

tulio

TJose 04-04-2005 16:39:47

tabla externa
 
otra forma es crear una tabla externa apuntando a tu archivo txt. Desde firebir la veras como una tabla mas..

tulio 04-04-2005 17:38:36

tJOse

Como se crea una tabla externa apuntando a un txt

saludos y gracias por tu respuesta

AGAG4 04-04-2005 18:00:44

Lo que te trata de decir Jose es, que debes de crear una Tabla Nueva en tu Base de Datos y por medio de una Aplicación en Delphi integrar los datos de tu archivo de texto a la tabla anteriormente mencionada, para eso puedes trabajar como te mencione en el primer mensaje por medio de un dataset,table ó query,
sólo ocuparías una función para interpretar los datos que tienes en el archivo de texto ten pongo la sintáxis:
1.-Lees archivo de texto, asignas primera linea a variable de tipo string
2.-Lees caracter por caracter de variable String hasta que sea diferente de espacios en blanco, Si se topa con espacio en blanco tomar dicho valor y asignarlo a su respectivo campo y así repites esto por cada linea que se encuentre del archivo... hasta que sea fin de archivo.


Espero te haya ayudado un poco
Saludos.

tulio 05-04-2005 12:28:49

Exelente AgaG4

es lo que yo pensaba,

Muchas gracias por su colaboracion a todos

saludos tulio.

jachguate 05-04-2005 16:01:53

Cita:

Empezado por AGAG4
Lo que te trata de decir Jose es

Creo que no es buena idea tratar de traducir lo que quiso decir alguien mas puesto que corremos riesgo de equivocarnos y pues mejor si ese alguien pudiese venir y aclararlo. Digo esto porque lo dicho por TJose:
Cita:

Empezado por TJose
otra forma es crear una tabla externa apuntando a tu archivo txt. Desde firebir la veras como una tabla mas..

Podria referirse a la capacidad de interbase/firebird de manejar "Tablas externas", que se evidencia en la sintaxis del Create table

Cita:

Empezado por langref.pdf
Syntax
CREATE TABLE table [EXTERNAL [FILE] ’ filespec’]
( <col_def> [, <col_def> | <tconstraint> …]);

Es una característica que nunca he usado, pero es probable que fuese de utilidad en este caso y que a eso se refiriera TJose.

Hasta luego.

;)

AGAG4 07-04-2005 02:30:20

Pues....
 
El Sr. Tulio tiene la última palabra...

Saludos

TJose 07-04-2005 17:03:00

Como bien dice jachguate, me referia la caracteristica de IB/FB.

Ejemplo:
create table ClientesEx external file 'rutaarchivo.txt'(
Id char(10),
Nombre char(50),
...
...
retorno char(n)
);
donde n = 2 en windows y n = 1 en linux.

archivo.txt debe ser texto con ancho fijo. Habras notado que en la definicion use en dodos los casos char como tipo de datos. Luego si los quiere copiar a tu tabla clientes nativa FB haces los siguiente:
insert into Clientes (Id, Nombre, ...) select * from ClientesEx;

En FB 1.0 esto se hace directamente.
En FB 1.5 hay que definir en el archivo de configuracion del servidor el tipo de permisos para archivos externos, hay varias opciones, tando de permisos como de ubicacion predeterminada de estos archivos externos.

Perdon por el codigo sin fromato. No se como hacerlo.

Saludos
TJose

tulio 07-04-2005 17:23:14

Gracias

tjose

te cuento que al problema lo solucione como decia lgarcia, pero me gusto mucho lo que me indicaste que no lo sabia

Muchas gracias a Lgarcia, tJose y Agag4 por todo su apoyo

Problema solucionado

AGAG4 07-04-2005 23:36:30

oki
 
Gracias TJose, la verdad yo no sabia que podrías generar una tabla externa en firebird.... Gracias por el ejemplo, de hecho eso andaba buscando hace rato pero lo que hacía era lo que le plantie a tulio... Pero que bueno que hay más opciones..


Saludos.

jachguate 08-04-2005 08:05:10

Cita:

Empezado por tulio
Muchas gracias a Lgarcia, tJose y Agag4 por todo su apoyo

:confused:
:o

Pues.... este.... de nada :rolleyes:

Gracias a vos por acordarte de todos...

:D:D


La franja horaria es GMT +2. Ahora son las 12:07:20.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi