Fórum Importar dados de arquivo texto #370319

08/05/2009

0

Olá.

É possivel importar dados de um arquivo texto para um banco de dados pelo delphi?

Luiz


L_carlos

L_carlos

Responder

Posts

08/05/2009

Woinch

Claro...
Primeiro defina de que maneira você quer fazer isso e se tiver alguma dificuldade basta postar aqui.


Responder

Gostei + 0

09/05/2009

L_carlos

Woinch,

O arquivo texto está da seguinte forma:

Alberto Silva;alberto11234@bol.com.br;Rua Itu;Niteroi;24000-000;2233-0099;8877-8877;Av Italva 44;Niteroi;24000;;AnicletisSharp;
Albizzati, Alexandre;albizzati@terra.com.br;;;;;;;;;;;
Aldair Lopes;oldpes@superig.com.br;;;;;;;;;;;
Alfredo Sampaio;alfredo@divisafm.com.br;;;;;;;;;;;
Alvaro Moro Filho;alvaro_moro@uol.com.br;;;;;;;;;;;

Eu preciso importar esses dados para uma tabela CONTATOS do firebird, o nome para um campo NOME, o email para o campo email, e assim por diante. Como consigo fazer isso?

Grato

Luiz Carlos


Responder

Gostei + 0

11/05/2009

Woinch

Vou lhe passar um exemplo. Tente utiliza-lo. Qualquer dúvida favor responder.

function CopiaStr(Texto: String; Posicao: Integer; Ocorrencia: String): String;
var
  I : Integer;

begin
  Result := ´´;
  I :=  0;

  while (Pos(Ocorrencia, Texto) > 0) do
  begin
    Result := Copy(Texto, 0, Pos(Ocorrencia, Texto)-1);
    Delete(Texto, 1, Pos(Ocorrencia, Texto)+ Length(Ocorrencia) -1);
    Inc(I);
    if (I = Posicao) then
      Exit;

    Result := Texto;
  end;
end;

procedure TForm1.btn1Click(Sender: TObject);
var
  S: TStringList;
  I: Integer;

begin
  S := TStringList.Create;
  try
    S.LoadFromFile(´Arquivo.txt´);

    for I := 0 to S.Count -1 do
      { sdsInsert é o componente utilizado para executar querys no banco de dados
        isso irá depender da sua estrutura. eu utilizo o SQLClientDataSet, mas ele é
        DBExpress. esse componente terá de estar devidamente configurado e com uma
        query da seguinte maneira: insert into TABELA (CAMPO1, CAMPO2, CAMPO3) values (:NOME, :EMAIL, :CAMPO3) }
      with sdsInsert do
      begin
        Close;
        Params.ParamByName(´NOME´).Value  := CopiaStr(S[I], 1, ´;´);
        Params.ParamByName(´EMAIL´).Value := CopiaStr(S[I], 2, ´;´);
        {...}
        Params.ParamByName(´N-EZIMO_PARAMETRO´).Value := CopiaStr(S[I], N, ´;´);

        ExecSQL;
      end;

  finally
    S.Free;
  end;
end;


Obrigado!


Responder

Gostei + 0

12/05/2009

L_carlos

Vlw Woinch, vou ver se consigo fazer a importação com seu codigo. Obrigado.

Luiz Carlos


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar