Fórum Como ler de um txt e gravar no meu banco ? #579498
29/03/2017
0
Desde já agradeço!
Rodrigo Oliveira
Curtir tópico
+ 0Posts
29/03/2017
Wazowski
2 - Cria uma conexão com o banco.
3 - Cria uma query. Insere os valores da stringlist com commandText ou com clientDataSet
Gostei + 0
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
Gostei + 0
29/03/2017
Rodrigo Oliveira
Gostei + 0
29/03/2017
Wazowski
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...
Gostei + 0
30/03/2017
Rodrigo Oliveira
Gostei + 0
30/03/2017
Wazowski
Gostei + 0
30/03/2017
Rodrigo Oliveira
Gostei + 0
30/03/2017
Wazowski
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;
Gostei + 0
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 ?
Gostei + 0
30/03/2017
Wazowski
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;
Gostei + 0
30/03/2017
Rodrigo Oliveira
Gostei + 0
30/03/2017
Wazowski
Gostei + 0
30/03/2017
Wazowski
Gostei + 0
30/03/2017
Rodrigo Oliveira
Gostei + 0
30/03/2017
Daniel Araújo
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)