Como ler de um txt e gravar no meu banco ?

29/03/2017

0

Boa tarde gostaria de saber como eu faço para pegar dados de um arquivo txt e jogar no meu banco de dados ultilizando uma aplicação em Delphi ?
Desde já agradeço!
Rodrigo Oliveira

Rodrigo Oliveira

Responder

Posts

29/03/2017

Wazowski

1 - Carrega numa stringlist o arquivo de texto.
2 - Cria uma conexão com o banco.
3 - Cria uma query. Insere os valores da stringlist com commandText ou com clientDataSet
Responder

29/03/2017

Rodrigo Oliveira

MG@nm@@nm@Washington Ribeiro@nm@37072030@nm@Varginha@nm@Distrito Industrial Miguel de Luca@nm@Avenida @nm@@nm@


eu quero pegar esses campos do txt em separado e jogar em uma tabela no meu banco
Responder

29/03/2017

Rodrigo Oliveira

tem algum exemplo amigo de como faço isso ?
Responder

29/03/2017

Wazowski

Criar um TSQLConnection e configura o drive, o ip, a porta, e o nome do banco e tentar conectar.
Se tu der um open e ele passar de boa já é meio caminho andado.

Depois tu cria uma query (TSQLDataSet ou TSQLQuery) e liga no tsqlconnection.

Criar uma stringlist e da um loadFromFile e passa o caminho do teu arquivo.
Passa o text da stringlist pra um array com o SplitString (uses StrUtils)
Ai tu monta o sql no command text da tua query

Query.Close;
Query.CommandText:= 'Insert into TMINHA_TABELA (val1, val2, val3.. valn) values (' + Array[0] + ',' + Array[1] + ',' ... Array[n] + ')';
Query.ExecSQL;


A parte mais chata é conectar no banco...
Responder

30/03/2017

Rodrigo Oliveira

Conectei já no banco amigo , porém como faço para passar o text da stringlist pra um array com o SplitString ?
Responder

30/03/2017

Wazowski

so jogar pra dentro de um TStringDynArray o retorno do splitstring (uses system.types)
Responder

30/03/2017

Rodrigo Oliveira

desculpa a minha ignorancia pois não estou entendendo teria um exemplo ?
Responder

30/03/2017

Wazowski

Cara, não fica criando um tópico diferente pra cada pergunta, manda por aqui.

Vamos lá... o SplitString serve para separar uma string em varias strings menores, mas pra isso tu precisa de um separador pra função saber como cortar o texto.

Ex:

var
  wTexto: String;
  wInformacoes: TStringDynArray;
  wNome, wIdade, wCidade, wUF, wPais: String;
begin
  wText:= 'Maicon|21|Blumenau|SC|Brasil';
  wInformacoes:= SplitString(wText, '|'); // parametro 1: texto que eu quero dividr, parametro 2: separador usado, ret: array de palavras
  wNome:= wInformacoes[0];
  wIdade:= wInformacoes[1];
  wCidade:= wInformacoes[2];
  wUF:= wInformacoes[3];
  wPais:= wInformacoes[4];
end;


Pra carregar teu arquivo:

var
  wSL: TStringList;
  wText: String;
begin
  wSL:= TStringList.Create;
  wSL.LoadFromFile('C:\\MinhaPast\\MeuArquivoTexto.txt');
  wText:= wSL.Text;
  wSL.Free;
Responder

30/03/2017

Rodrigo Oliveira

procedure TForm1.Button3Click(Sender: TObject);
var
   f:TextFile;
   linha:String;
   Lista:TStrings;

begin
   Lista:=TStringList.Create;
   AssignFile(f,'C:\\trabalho\\Rodrigo\\cep_logradouros_mg.txt');
   Reset(f); //abre o arquivo para leitura;
   Lista.DelimitedText:='@nm@';

   While not eof(f) do begin

     Readln(f,linha); //le do arquivo e desce uma linha. O conteúdo lido é transferido para a variável linha
     memo1.lines.add(linha);
     label1.caption := linha;
   End;

   Closefile(f);
end;


Estou conseguindo jogar a linha toda no meu memo porém gostaria de saber como faço para usar um delimiter que no meu caso seria o @nm@ para separar os campos do txt ?
Responder

30/03/2017

Wazowski

Você não ta usando as funções que eu te falei.
Teu código não ta correto. DelimitedText da stringlist não serve pra separar nada. Tu ta carregando o teu arquivo numa string e lendo a string, por isso nao ta funcionando.

procedure TForm1.Button3Click(Sender: TObject);
var
  linha:String;
  Lista:TStrings;
  ArrayPalavras: TStringDynArray;
begin
  Lista:=TStringList.Create;
  Lista.LoadFromFile(''C:\\\\zz.txt'');
  ArrayPalavras:= SplitString(Lista.Text, ''@nm@'');

  for linha in ArrayPalavras do
  begin
    memo1.lines.add(linha);
    label1.caption := linha;
  End;
end;
Responder

30/03/2017

Rodrigo Oliveira

Está dando um erro no SplitString mais precisamente ''''Undeclared Indentifier :SplitString
Responder

30/03/2017

Wazowski

Tu tem que adicionar StrUtils nas USES do teu fonte
Responder

30/03/2017

Wazowski

E Types também pra usar o TStringDynArray
Responder

30/03/2017

Rodrigo Oliveira

Continua dando o mesmo erro amigo
Responder

30/03/2017

Daniel Araújo

Bom dia Rodrigo!

Faz o exemplo desse artigo e depois tenta aplicar no teu projeto:
https://xucro.wordpress.com/tag/separar-string-por-delimitador/

Daniel Araújo
Sombra Tecnologia
Consultoria e Desenvolvimento de Sistemas
sombra.tecnologia@gmail.com
55 85 98135-5516
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar