Estou usando o ArcGIS 10.0 no Windows 7 de 64 bits com 4 GB de RAM.
Eu tenho algumas tabelas muito grandes no formato CSV para importar para o ArcGIS, todas elas têm cerca de 30 campos, mais de 5 milhões de registros por tabela (algumas têm o dobro disso ou mais) e tamanhos de arquivo de até 5 GB. Estou tentando importar cada um deles para um geodatabase de arquivo como tabelas separadas, para que eu possa, finalmente, vinculá-los a uma classe de recurso e analisar os resultados nas tabelas de acordo com sua localização.
O problema é que o ArcGIS parece simplesmente parar de importar registros em um determinado ponto. Estou usando a ferramenta "Tabela em tabela" em Conversão> Para geodatabase, mas a ferramenta "Copiar linhas" tem o mesmo problema. Mesmo se eu apenas adicionar o arquivo CSV diretamente ao ArcGIS sem tentar convertê-lo em uma tabela FGDB primeiro, o problema é o mesmo. Uma das minhas tabelas possui cerca de 11 milhões de registros, e o ArcGIS importa apenas cerca de 10 milhões deles. O ArcGIS não me diz que ocorreu algum erro, a ferramenta termina como se nada estivesse errado.
Eu tentei algumas vezes agora e o número de registros que entram na tabela FGDB é sempre o mesmo e não parece ser um limite de tamanho de arquivo que eu já ouvi falar (não um quadrado de 2 ou 16) O ArcGIS foi capaz de importar outro CSV com cerca de 6 milhões de registros e todos os registros surgiram (embora com os problemas que estou tendo com a tabela maior, a menor também seja suspeita agora). O site da ESRI lista os seguintes limites de tamanho em um geodatabase , e estou longe de atingir qualquer um deles:
- Tamanho do geodatabase do arquivo: sem limite
- Tamanho da tabela ou da classe de recurso: 1 TB (padrão), 4 GB ou 256 TB com a palavra-chave
- Número de classes e tabelas de recursos: 2.147.483.647
- Número de campos em uma classe ou tabela de recurso: 65.534
- Número de linhas em uma classe ou tabela de recurso: 2.147.483.647
- Comprimento do nome do geodatabase: número de caracteres que o sistema operacional permite em uma pasta
- Classe do recurso ou comprimento do nome da tabela: 160 caracteres
- Comprimento do nome do campo: 64 caracteres
- Largura do campo de texto: 2.147.483.647
Tudo o que realmente preciso fazer nessas tabelas é adicionar alguns campos, excluir outros e gerar valores para os novos campos (somas de alguns dos campos existentes). Estou usando o ArcGIS para isso porque estou familiarizado com a calculadora de campo e sei (ou sabia até agora) que ele poderia lidar com tabelas que consistem em milhões de registros, enquanto a maioria dos outros softwares de desktop que eu tenho à mão (MS Access / Excel ) engasga com tantos registros. Portanto, estou aberto a usar outro software para manipular a tabela original e exportar a tabela resultante (muito menor) para o ArcGIS. Realmente, o fato de eu estar tendo esse problema e o ArcGIS não estar me dando nenhum erro ou aviso de que o problema está ocorrendo me faz querer lidar com esses dados fora do ArcGIS o máximo possível.
Respostas:
Liguei para o suporte da ESRI sobre isso e a resposta deles não foi animadora, mas explicou o problema. Parafraseando a ESRI: O problema é que o ArcGIS Desktop, sendo um software de 32 bits, se limita ao uso máximo de 4 GB de RAM. O arquivo de texto deve ser processado na RAM antes de ser armazenado como uma tabela; portanto, em algumas situações durante o processamento, o ArcGIS atingiu o limite de RAM e parou por aí. O arquivo que eu estava importando tinha cerca de 6 GB de tamanho. Aparentemente, o fato de ter falhado sem fornecer uma mensagem de erro é exclusivo para mim. Tentei que outras pessoas em meu escritório o fizessem e a importação ainda falhou, mas deu uma mensagem de erro (uma inútil, mas pelo menos algo que deixava o o usuário sabe que algo deu errado), e o representante da ESRI disse que deveria dar um erro.
Minha solução foi dividir o arquivo em dois CSVs menores usando um editor de texto (usei o EditPad Pro), importar cada um deles para um FGDB como uma tabela separada e mesclar as duas tabelas FGDB. Por alguma razão, isso falhou na primeira vez que tentei, mas funcionou mais tarde. Eu posso testar isso um pouco mais completamente, vou lidar com arquivos desse tamanho continuamente.
Estou usando o ArcGIS 10.0, mas o ArcGIS 10.1 service pack 1 acabou de ser lançado e adiciona a capacidade de usar um geoprocessador de segundo plano de 64 bits, que permitirá que o geoprocessador use mais de 4 GB de RAM, o que pode corrigir esse problema, mas não posso teste isso.
ATUALIZAÇÃO: Agora estou usando o ArcGIS 10.1 SP1 (com o complemento de geoprocessamento em segundo plano de 64 bits) e importa com sucesso esses .CSVs gigantes, pelo menos os que já lidei até agora. Em uma máquina com 14 GB de RAM (sim, 14), um .CSV de 6 GB com cerca de 10,5 milhões de linhas é importado com êxito para uma tabela FGDB.
fonte
Para fins de carregamento de dados, a leitura de um enorme arquivo CSV na memória é bastante tola. Ele realmente só precisa ler uma linha de cada vez.
Sugiro escrever um script Python e usar o
csv
módulo para lê-lo linha por linha e inserir linhas na tabela usando umInsertCursor
(ou de preferência umarcpy.da.InsertCursor
, pois é mais rápido, mas disponível apenas na versão 10.1).Edit: Basta ler o seu último parágrafo. Parece que você provavelmente poderia fazer isso tudo dentro do Python com bastante facilidade, mesmo exportando os resultados de volta para CSV ou algum outro formato.
Se você pudesse descrever exatamente o que precisa fazer com cada linha e coluna, isso seria útil.
fonte
Você já tentou dividir os arquivos csv de 5 GB em pequenos.
existe uma ferramenta para dividir o csv com base em linhas ou contagem de arquivos.
Divida os arquivos e tente importar .. Mas há uma limitação nessa ferramenta, acho que funcionará apenas para a tabela em um arquivo (acho que sim). pls. Experimente.
http://www.shivaranjan.com/2008/11/06/how-to-split-csv-file-into-multiple-parts-easily-and-quickly/
fonte
Eu estava encontrando esse erro (001156) na mesma linha de um arquivo de texto grande delimitado por canal (2.712.391) linhas cerca de um quarto do caminho.
Então, pensei que havia algo errado com essa linha, mas era idêntica ao restante das linhas.
Acabei excluindo as linhas da importação parcial e, em seguida, carregando os dados (Carregar> Carregar Dados ...) e consegui obter todas as 2 milhões de linhas.
Também estou usando o geoprocessamento em segundo plano 10.1 SP1 com 64 bits em 16 GB de RAM e é um processo que utilizará a RAM (nem todos os processos estão ativados em 64 bits ainda).
Solução lenta e desajeitada, mas funciona de maneira consistente.
Talvez você precise configurar a tabela vazia primeiro se não tiver êxito com nenhum grau de importação.
fonte