Array
(
)

transferir do txt para um bd

Eric.miranda
   - 10 set 2004

Bom dia.
estou com um problema e queria ver ser vcs poderiam me ajudar em mais essa...
tenho um programa que faz basicamente duas operações.. Lê de um arquivo txt e grava num banco de dados sqlserver7.0.
acontece que esse arquivo txt chega a ter 5.000 linhas..
e pelo processo que estou fazendo ele chega a demorar horas pra fazer isso..
o que estou fazendo é fazer um copy... jogar numa variável.. isso até o fim da linha
depois mando gravar...
estou utilizando o sqlserver7.0 como minha base de dados.

estou usando table e query e bde..
vi um artigo sobre o dbexpress que ficaria mais rápido..mas não sei onde o encontro dinovo...

valeu
Eric


Eric.miranda
   - 13 set 2004

sobe!


Alceste
   - 11 out 2004

Rapaz vc está na mesma situação em que a minha !!!!

alcestesoares@bol.com.br




Citação:
Bom dia.
estou com um problema e queria ver ser vcs poderiam me ajudar em mais essa...
tenho um programa que faz basicamente duas operações.. Lê de um arquivo txt e grava num banco de dados sqlserver7.0.
acontece que esse arquivo txt chega a ter 5.000 linhas..
e pelo processo que estou fazendo ele chega a demorar horas pra fazer isso..
o que estou fazendo é fazer um copy... jogar numa variável.. isso até o fim da linha
depois mando gravar...
estou utilizando o sqlserver7.0 como minha base de dados.

estou usando table e query e bde..
vi um artigo sobre o dbexpress que ficaria mais rápido..mas não sei onde o encontro dinovo...

valeu
Eric



Christian_adriano
   - 11 out 2004

Olá Colegas,

tenta usar esse procedimento :

procedure GravarArquivoTexto(Diretorio, NomeArquivo, CampoTexto : String; Query : TDataSet);
var
Texto : TextFile;
AuxText : String;
begin
AssignFile (Texto, Diretorio + NomeArquivo);
try
Read(Texto, AuxText);
Query.FieldByName(CampoTexto).AsString :=AuxText;
Query.Post;
while not Eof(Texto) do begin
readln(Texto, AuxText);
Query.FieldByName(CampoTexto).AsString := AuxText;
Query.Post;
end;
finally
CloseFile(Texto);
end;
end;

espero ter ajudado.

[]´s.

Christian.


Christian_adriano
   - 11 out 2004

Uma Correção :

procedure GravarArquivoTexto(Diretorio, NomeArquivo, CampoTexto : String; Query : TDataSet);
var
Texto : TextFile;
AuxText : String;
begin
AssignFile (Texto, Diretorio + NomeArquivo);
try
Query.Append;
Read(Texto, AuxText);
Query.FieldByName(CampoTexto).AsString :=AuxText;
Query.Post;
while not Eof(Texto) do begin
Query.Append;
readln(Texto, AuxText);
Query.FieldByName(CampoTexto).AsString := AuxText;
Query.Post;
end;
finally
CloseFile(Texto);
end;
end;

[]´s.

Christian.


Aroldo Zanela
   - 12 out 2004


Citação:
Bom dia.
estou com um problema e queria ver ser vcs poderiam me ajudar em mais essa...
tenho um programa que faz basicamente duas operações.. Lê de um arquivo txt e grava num banco de dados sqlserver7.0.
acontece que esse arquivo txt chega a ter 5.000 linhas..
e pelo processo que estou fazendo ele chega a demorar horas pra fazer isso..
o que estou fazendo é fazer um copy... jogar numa variável.. isso até o fim da linha
depois mando gravar...
estou utilizando o sqlserver7.0 como minha base de dados.

estou usando table e query e bde..
vi um artigo sobre o dbexpress que ficaria mais rápido..mas não sei onde o encontro dinovo...

valeu
Eric


Colega,

A melhor performance para solucionar seu problema, sem dúvida alguma, é utilizando o DTS do MSSQL que está disponível a partir da versão 7.
Por meio do Enterprise Manager, vá para Local Packages e crie um novo package, veja os componentes à esquerda (você identifica pelos nomes) e em seguida seleciona ambos (origem e destino), pressiona o botão direito e seleciona Transformation Task e efetua os ajustes. Este volume de dados o SQL deverá ´gastar´ uns 30 segundos.
Se não conseguir fazer sozinho, poste sua dúvida aqui no fórum de SQL Server que o nosso colega Marcus Magalhães poderá descrever o ´passo-a-passo´ com mais propriedade.