Fórum Como ler um arquivo texto atraves de uma consulta #236878

09/06/2004

0

Ola pessoal eu sei que minha pergunta é meio tosca, mas já procurei no pesquisar e não consegui entender eu queria o seguinte ler um arquivo texto através de uma query no delphi tenho uma lista de preços e vou ter que passar ela como arquivo texto para ser atualizada, mas não consigo cliar uma consulta que leia esse arquivo se alguém puder me ajudar eu agradeço.


Hdionizio

Hdionizio

Responder

Posts

09/06/2004

Thaisandrade

Você precisa necessariamente ler esse arquivo texto atráves de uma query? Por que senão você pode lê-lo como um arquivo texto e gerar a instrução SQL de atualização do banco. Da mesma forma para salvar os dados no arquivo, ou seja, você lê os dados do banco e os salva no arquivo texto.


Responder

Gostei + 0

09/06/2004

Hdionizio

Eu precisa ler o arquivo atraves de uma query para ganhar velocidade nas consultas


Responder

Gostei + 0

09/06/2004

Thaisandrade

Olha só, entendo quando fala que precisa de velocidade. Só que é o seguinte, o fato de estar lendo o arquivo texto através de uma query, não quer dizer que será mais rápido não. Para fazer isso, provavelmente você vai precisa de um driver de ODBC para arquivos textos, ou de qualquer outro método de conexão e isso pode tornar sua consulta lenta. O ato de vc ler o arquivo e gerar a instrução não será tão mais lento assim não. Faça pelo menos um teste, quem sabe não resolve seu problema de uma forma mais simples?


Responder

Gostei + 0

09/06/2004

Aroldo Zanela

Colega,

Você até consegue ler arquivos textos por meio de Tables do BDE, mas mesmo assim, o tempo de I/O deverá ser muito próximo a leitura pura e simples por meio de TStringList ou AssignFile ... ReadLn ou talvez inferior. Mesmo assim, poderia estar utilizando componente BatchMove para popular sua tabela. No entanto, a opção de ler o arquivo com AssignFile ... ReadLn deverá ser a mais apropriada.
Descreva mais detalhes de sua necessidade para que possamos tentar ajudar mais.


Responder

Gostei + 0

11/06/2004

Hdionizio

Bom pessoal a ideia de ler um arquivo texto atraves de uma quere é pelo seguinte.
Eu estou fazendo sistema de vendas que possui uma lista de produtos com seus respectivos preços e um estoque que fica em cada unidade como os preços e as promoções são feitas e autorizadas pela central eu imaginei o seguinte, atualizar a lista de peços somente sem modificar o estoque so que ai surgiu o problema a lista de produto é muito grande pois são mais de 60000000 itens para atualizar e o pior é que a atualização é feita por disquete. Por isso gostaria q a query abrice o arquivo texto pois eu posso mandar como arquivo texto que é bem pequeno e simplismente substituo esse arquivo texto.
Bom pessoal não sei se a ideia que tive é correta mas se alguem puder me ajuda eu agradeço.


Responder

Gostei + 0

11/06/2004

Thaisandrade

Bom, entendi o seu problema. Você pode fazer um arquivo texto para atualização, ai vc lê o arquivo e atualiza as tabelas. Dessa forma ficaria mais simples, mais fácil e mais correto. Também pode usar XML.


Responder

Gostei + 0

11/06/2004

Maxwell_monteiro

Só uma pergunta são 60000000 de produtos distintos? ou isso é o total de itens de alguma tabela de vendas, estoque etc... Pois se for isso vc está cometendo um grave erro de modelagem de dados!


Responder

Gostei + 0

11/06/2004

Hdionizio

Exatamente são 60000000 itens mesmo, bom tem alguns que repetem por causa de um serem de marca ou fornecedores diferentes pior isso que fica grande mas tambem os caras vendem de tudo. E isso é realmente somente é somente em uma tabela.
Portanto se alguem souber como eu faço para fazer uma Query ler um arquivo texto como se foce uma tabela eu agradeço.


Responder

Gostei + 0

12/06/2004

Thematrix:reloaded

Se vc estiver usando interbase, vc pode fazer o seguinte:

CREATE TABLE ESTOQUE
EXTERNAL FILE ´C:\TEMP\ESTOQUE.TXT´
(
CODPRODCHAR(6),
DESCRICAOCHAR(40),
ESTOQUE CHAR(8),
EOL_CHRCHAR(2)
);

O campo EOL_CHR é obrigatório, é o retorno de carro no arquivo texto!

Pronto o interbase vai interpretar o seu arquivo texto.

Limitações:

> O arquivo texto tem que estar sempre no mesmo lugar
> O arquivo texto deve ser formatado com tamanho fixo (sem delimitador)
> O ideal é vc copiar o conteúdo do disquete para um diretório do HD, no exemplo: C:\TEMP

QQ Dúvida é só dizer!


Responder

Gostei + 0

12/06/2004

Thematrix:reloaded

Corrigindo:

CREATE TABLE ESTOQUE
EXTERNAL FILE ´C:\TEMP\ESTOQUE.TXT´
(
CODPROD CHAR(6),
DESCRICAO CHAR(40),
ESTOQUE CHAR(7),
EOL_CHR CHAR(2)
);


Responder

Gostei + 0

13/06/2004

Carlosrm

hdionizio,

numa das suas mensagens vc fala em ´ganhar velocidade nas consultas´
em outra, vc diz que sua lista de produtos tem acima de 60 milhões de produtos...

Como já alertou o Maxwell_Monteiro, deve estar havendo algum grande equívoco na montagem das suas tabelas...

Só a título de exemplo, me baseei na lista de produtos do Submarino.com, que em uma de suas próprias informações diz (copiei sem licença, por minha conta e risco):

´ A Maior Empresa de Comércio Eletrônico do Brasil
O Submarino é a maior loja de comércio eletrônico do país. O Submarino possui o maior sortimento de produtos disponíveis no varejo brasileiro, com cerca de 700 mil itens cadastrados, em 16 categorias: Livros, CDs, DVDs, Eletrônicos, Cine & Foto, Eletrodomésticos, Utilidades Domésticas, Cama, Mesa e Banho, Informática, Games, Esporte & Lazer, Telecomunicações, Brinquedos, Pet Shop, Beleza & Saúde e Presentes Finos. ...´ (www.submarino.com.br/)

Quero chamar a atenção para o fato de que eles (Submarino) trabalham com cerca de 700 mil itens...e não 60 milhões...

Aposto meu 13.o salário (não recebo...!) de que com uma reestruturação das sua tabelas vc terá ganhos de velocidade incríveis e possibilidades muito maiores de melhor aproveitamento das informações armazenadas. Muito basicamente: em vez de trabalhar com uma tabela gigantesca (muitos dados e informação repetida, que aumentam a demora no processamento, exigem mais recursos de máquina, aumentam chance de erro, entre outros), vc terá mais tabelas, inter-relacionadas, porém todas muito menores e de manutenção bem mais simples e rápida...

Quanto melhor estruturadas estiverem suas tabelas, muito mais eficazes serão as consultas sql e outras operações de um SGBD. Tente primeiro aperfeiçoar a estrutura das tabelas. Depois disso a sql vai poder mostrar pra que foi criada.

Se o seu maior problema está em abertura do programa, consultas, atualização... me parece (como já foi dito) que o calcanhar de Aquiles aí é a estrutura das suas tabelas... Procure aperfeiçoar esta parte primeiro... os ganhos obtidos compensarão plenamente os eventuais custos...
Depois disso, suas consultas e atualizações vão ´voar´...

boa sorte. carlosrm :wink:


Responder

Gostei + 0

14/06/2004

Hdionizio

carlosrm na verdade esse bd eu peguei de outro sitema que ja existia mas o problema é que é uma rede de supermercado e oq almenta muito os registro é que existem ediversar marcas e tamanho e especificações diferentes para cada produto.
Como os caras vendem de moveis a tempero de cozinha imagina so quantos itens não tem.


Responder

Gostei + 0

14/06/2004

Redoctober

carlosrm na verdade esse bd eu peguei de outro sitema que ja existia mas o problema é que é uma rede de supermercado e oq almenta muito os registro é que existem ediversar marcas e tamanho e especificações diferentes para cada produto. Como os caras vendem de moveis a tempero de cozinha imagina so quantos itens não tem.


Uma sugestão!
Você diz que o motivo de gravar em arquivo de texto é pelo fato de salvar os dados em um disquete... Faça o seguinte, utilize uma comunicação entre as lojas para que você não precise utilizar o disquete. Caso todas as lojas tenha internet, ótimo! Aí utilize Sockets, caso não tenho faça uma comunicação direta com DialUp...

Apenas uma idéia.

Abraço


Responder

Gostei + 0

15/06/2004

Hdionizio

É a solução de dial Up é bem interessnte e ja propus a gerencia isso so que os caras não querem de jeito nenhum. (E o que eu ja insisti bastante)


Responder

Gostei + 0

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

Aceitar