Usuário com melhor resposta
importar dados de um txt de 3,5gb para um acess ou excel

Pergunta
-
Galera como estao ....???
Tenho um pequeno contra tempo
Possuo um arquivo TXT com 8.460.252 registros onde seu tamanho é de 3,3gb.
Preciso importar este dados para um excel ou mesmo para um acess,encontrei uma soluçao abaixo ,que aparentemente esta respondendo,mas estou rodando no excel que infelizmente nao esta gravando todos os dados .
neste caso queria tentar usa-lo no acess,porem o codigo esta dando alguns errinhos...
Algeum tem uma saida ou mesmo outra soluçao????
abaixo codigo
'Procedimento para selecionar arquivos Function lfSelecionarArquivo() As String Dim fDlg As FileDialog Dim lArquivo As String 'Chama o objeto passando os parâmetros Set fDlg = Application.FileDialog(FileDialogType:=msoFileDialogOpen) With fDlg 'Alterar esta propriedade para True permitirá a seleção de vários arquivos .AllowMultiSelect = False 'Determina a forma de visualização dos aruqivos .InitialView = msoFileDialogViewDetails 'Filtro de arquivos, pode ser colocado mais do que um filtro separando com ; por exemplo: "*.xls;*.xlsm" .Filters.Add "Texto", "*.txt", 1 'Determina qual o drive inicial .InitialFileName = "endereco do arquivo\" End With 'Retorna o arquivo selecionado If fDlg.Show = -1 Then lArquivo = fDlg.SelectedItems(1) lfSelecionarArquivo = lArquivo Else MsgBox "Não foi selecionado nenhum arquivo" End If End Function Public Sub LerArquivoTexto() On Error GoTo TratarErro Dim lsCaminho As String Dim llArquivo As Long Dim llLinha As String Dim lQtde As Long Dim llPlanilhas As Long 'Local do Arquivo lsCaminho = lfSelecionarArquivo 'InputBox("Digite o caminho do arquivo: ", actName) 'Qtde de Linhas a separar no arquivo lQtde = InputBox("A cada quantas linhas separar o arquivo: ", actName) 'Identificar se o arquivo existe If Dir(lsCaminho) <> "" Then llArquivo = FreeFile Open lsCaminho For Input As #llArquivo lContador = 1 llPlanilhas = 1 'Ler o arquivo texto While Not EOF(llArquivo) Line Input #llArquivo, llLinha If lContador <= lQtde Then Range("A" & lContador).Value = llLinha Else llPlanilhas = llPlanilhas + 1 Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = CStr(llPlanilhas) lContador = 1 Range("A" & lContador).Value = llLinha End If lContador = lContador + 1 Wend Close #llArquivo Else MsgBox "Arquivo não encontrado" End If Sair: Exit Sub TratarErro: MsgBox "Houve um erro na leitura do arquivo!" GoTo Sair Resume End Sub
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
Respostas
-
Boa noite Adérito.
É difícil supor qual o motivo desse erro, dadas as dimensões desse arquivo. Mas para tentar te ajudar, sugiro a leitura do artigo:
http://office.microsoft.com/pt-br/excel-help/especificacoes-e-limites-do-microsoft-excel-HP010073849.aspx
que trata dos limites aplicáveis ao Excel 2007. Verifique se algumas delas se aplica a você. Um dos possíveis gargalos pode ser o número de caracteres numa única célula ou até mesmo o limite da memória disponível (sistemas de 32 bits trabalham com limite máximo de ~3GB). Também sugiro tb verificar se o número da linha de erro é sempre o mesmo ou não. Talvez haja algum problema em dada parte do arquivo.
Espero que ajude.
Abraço.
Filipe Magno
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 01:13
Todas as Respostas
-
Dado o volume de informação a ser importado, não acho uma boa ideia importar todos os registros ao Excel e nem ao Access.
Já considerou em utilizar a ferramenta de PowerPivot? Ela é capaz de trabalhar com milhões de dados no Excel, em alta velocidade.
PowerPivot é um suplemento para Excel 2010 e 2013. Baixe o suplemento e tente processar o seu arquivo.
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Boa Soluçao Felipe
Porem eu tenho uma restrinçao de versao ,atualmente estou com office 2007 e a instituiçao nao possui up para 2010
Ou seja ...tenho que trabalhar com as ferramentas que tenho...a segurança da informaçao é muito forte neste caso.....me virar nos 30.
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
-
Bom dia,
Pelo grande número de registro não sei seria possível armazenar todos esses dados de forma linear.
Já pensou na possibilidade de quando atingir o limite de linhas, adicionar os dados em uma nova guia ou em outras colunas.
Á disposição.
Abraço.
-
Jhonatan
Bom dia
Este codigo ja realiza este processo.
pois preciso de algo a qual seja rapido o retorno para consolidaçao .
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
-
Ainda na minha linha de pensamento, acredito estarmos usando a ferramenta errada para resolver esse problema. Se o TI é incapaz de sensibilizar que você precisa de uma ferramenta melhor para manusear com seu material de trabalho, é uma pena.
Bom, não vou ficar aqui discursando, vamos ao que interessa.
Em primeiro lugar, por que precisa jogar esses dados do TXT numa planilha? O que fará depois com esses dados?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Felipe
Voce tem toda razao....mas manda quem pode ...e tem o outro lado da $$$$$
Apos planilhar este arquivo ,estarei consolidando ,efetuando relatorios,graficos etc.
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
-
Certo.
Voltemos à sua rotina. Você disse que não importa todos os dados. Por quê? O que acontece?
Você obtém um erro de execução? "Estoura" o número de linhas do Excel? Ou a rotina cessa a execução sem jogar todos os dados na planilha, sem dar erro?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Felipe
entao os dados sao copiados,porem quando chega aproximadamente 1.500.00 de registros da um erro para fechar os aplicativos.
E fecha o sisteminha.
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
-
Para situações como esta eu utilizo ferramentas de ETL. Atualmente tenho utilizado muito o Pentaho que é uma solução gratuita
http://sourceforge.net/projects/pentaho/files/Data%20Integration/5.1/
Se forem problemas pontuais com uma característica específica acho que é melhor do que desenvolver código para isso.
Bráulio Figueiredo
braulio@braulioti.com.br - http://www.braulioti.com.br
-
"entao os dados sao copiados,porem quando chega aproximadamente 1.500.00 de registros da um erro para fechar os aplicativos"
Não entendo. Pelo que vi do seu código, o erro deveria acontecer na linha 1048576 porque este é o número de linhas no Excel e seu código não trata a possibilidade de copiar os dados para outra planilha caso ela fique cheia. É esse mesmo o código que está usando?
Além disso, o erro que você obtém é um erro de execução do VBA ou um crash da aplicação Excel?
Felipe Costa Gualberto - http://www.ambienteoffice.com.br
-
Felipe
AO rodar o codigo ,ele te pergunta em que linha que sera quebrado
com isso ele quebra para uma nova planilha.
mas quando carrega aproximadamente 1.500.000 ,sendo quebrado em varias outras planilhas,ele da um erro
logo depois da a tela de erro do sistema
ja rodei o mesmo codigo em um micro novo ,sem nenhum sistema rodando,para certificar algum problema de memoria ou mesmo desempenho de maquina ,porem me apresentou a mesma mensagem.
............www.alpconsultoria.com.br........ Caso esta resposta tenha solucionado sua dúvida, favor clicar em “Marcar como Resposta” para que outros membros possam compartilhar lendo este thread..
- Editado Adérito segunda-feira, 18 de agosto de 2014 13:19 erro digito
-
Boa noite Adérito.
É difícil supor qual o motivo desse erro, dadas as dimensões desse arquivo. Mas para tentar te ajudar, sugiro a leitura do artigo:
http://office.microsoft.com/pt-br/excel-help/especificacoes-e-limites-do-microsoft-excel-HP010073849.aspx
que trata dos limites aplicáveis ao Excel 2007. Verifique se algumas delas se aplica a você. Um dos possíveis gargalos pode ser o número de caracteres numa única célula ou até mesmo o limite da memória disponível (sistemas de 32 bits trabalham com limite máximo de ~3GB). Também sugiro tb verificar se o número da linha de erro é sempre o mesmo ou não. Talvez haja algum problema em dada parte do arquivo.
Espero que ajude.
Abraço.
Filipe Magno
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator sexta-feira, 5 de setembro de 2014 01:13