Cita:
Empezado por laukri
hola! como se haria con la 2da opción? yo necesito leer datos desde un archivo (separado por con un comando sql de forma manual
Gracias!
|
Cuando he tenido que importar datos desde archivos de texto siempre uso una rutina que me encontré si mal no recuerdo en Trucomania y se llama GetToken()
Así es como yo importo los datos a una BD cualquiera, lo único que cambiaría es el objeto Query que uses,
IBQuery, ADOQuery, Query1.
Código Delphi
[-]
procedure TFImporta.BitBtn1Click(Sender: TObject);
function GetToken(Cadena,Separador:string;Token:integer):string;
var
Posicion:integer;
begin
while Token > 1 do begin
Delete(Cadena,1,Pos(Separador,Cadena));
Dec(Token);
end;
Posicion:=Pos(Separador,Cadena);
if Posicion=0 then result:=cadena
else Result:=Copy(Cadena,1,Posicion-Length(Separador));
end;
procedure CargaDatos(L:string);
begin
Codigo := GetToken(L,';',1);
Extension := GetToken(L,';',2);
Responsable := GetToken(L,';',3);
end;
procedure GrabaDatos;
begin
with Query1 do begin sql.clear;
sql.add('INSERT INTO CODIGOS (Codigo, Extension, Responsable)');
sql.add('VALUES ('+QuotedStr(Codigo)+','+
QuotedStr(Extension)+','+
QuotedStr(Responsable)+')');
ExecSQL;
end;
end;
begin
AssignFile(Arch,'archivo.csv');
Reset(Arch);
while not Eof(Arch) do begin
Readln(Arch,Linea);
CargaDatos(Linea);
GrabaDatos;
end;
CloseFile(Arch);
ShowMessage('Proceso terminado');
end;
Salud OS