Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-03-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
Thumbs up 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
Responder Con Cita
  #2  
Antiguo 31-03-2005
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 01-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 01-04-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
Gracias

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

saludos

tulio
Responder Con Cita
  #5  
Antiguo 01-04-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
Alfredo

la estructura del archivo es asi

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

SALUDOS

tulio
Responder Con Cita
  #6  
Antiguo 04-04-2005
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
tabla externa

otra forma es crear una tabla externa apuntando a tu archivo txt. Desde firebir la veras como una tabla mas..
Responder Con Cita
  #7  
Antiguo 04-04-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
tJOse

Como se crea una tabla externa apuntando a un txt

saludos y gracias por tu respuesta
Responder Con Cita
  #8  
Antiguo 04-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #9  
Antiguo 05-04-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
Exelente AgaG4

es lo que yo pensaba,

Muchas gracias por su colaboracion a todos

saludos tulio.
Responder Con Cita
  #10  
Antiguo 05-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

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.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 07-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Pues....

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

Saludos
Responder Con Cita
  #12  
Antiguo 07-04-2005
TJose TJose is offline
Miembro
 
Registrado: may 2003
Posts: 162
Poder: 21
TJose Va por buen camino
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
Responder Con Cita
  #13  
Antiguo 07-04-2005
tulio tulio is offline
Miembro
 
Registrado: may 2003
Ubicación: Argentina
Posts: 300
Poder: 21
tulio Va por buen camino
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
Responder Con Cita
  #14  
Antiguo 07-04-2005
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
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.
Responder Con Cita
  #15  
Antiguo 08-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

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



Pues.... este.... de nada

Gracias a vos por acordarte de todos...

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:41:11.


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
Copyright 1996-2007 Club Delphi