Estou trabalhando com dados do censo e baixei vários arquivos CSV, cada um com 600 colunas / variáveis. Gostaria de armazená-los todos em um banco de dados passível de consulta, mas tudo o que tentei até agora (tabela do MS Access, Arc geodatabase) trunca a tabela para 256 colunas. Existem soluções para lidar com tabelas grandes acessíveis a alguém que não é um DBA?
10
Respostas:
O PostgreSQL possui um limite de coluna entre 250 e 1600 "dependendo dos tipos de coluna" e suporta dados e consultas espaciais com a extensão PostGIS. Então, eu estaria inclinado a fazer duas coisas:
Primeiro, onde uma coluna representa uma categoria em vez de texto livre, crie uma tabela separada com essas categorias e substitua a coluna por um ID inteiro e restrição de chave estrangeira, referenciando a tabela de categoria.
Em segundo lugar, quebre a Terceira Forma Normal dividindo a grande mesa em duas ou mais, de alguma maneira lógica, e estabeleça um relacionamento individual entre elas. Talvez isso não seja o mais eficiente, mas se você raramente precisar de alguns dados, a consulta poderá estar apenas nas tabelas que você deseja.
Outra alternativa completamente diferente seria usar um banco de dados "NOSQL", como MongoDB, CouchDB e assim por diante. Não há limites físicos para o tamanho da "linha" e, se os dados não estiverem presentes em um registro, eles não precisarão ocupar espaço.
O suporte espacial não é tão bom para esses tipos de bancos de dados grandes, mas o MongoDB suporta consultas e dados espaciais em 2D, e o CouchDB parece ter uma funcionalidade semelhante.
fonte
Recentemente, lidei com o mesmo problema com os arquivos CSV do perfil de censo do Statistics Canada contendo 2172 colunas. Você pode importar seu csv para um geodatabase de arquivo ESRI (FGDB) se tiver acesso ao ArcGIS. De acordo com a ESRI, o formato FGDB pode manipular 65.534 campos em uma classe ou tabela de recurso .
No meu caso, consegui importar meu arquivo CSV de 2172 colunas para uma tabela FGDB sem problemas.
Depois de inserir a tabela inteira no FGDB, é possível dividi-la da maneira que desejar (por exemplo, logicamente ou com base em limitações de db), mantendo uma coluna de identificação exclusiva, para garantir que você possa juntá-la novamente como necessário.
fonte
Breve:
Minha opção para dados com muitos atributos ou com tipo de atributo variável para cada objeto é usar o modelo de dados KEY / VALUE, ele pode ser implementado e funciona muito bem no sql (eu recomendaria o postgresql + postgis).
Descrição:
1) Você tem uma tabela para recursos, digamos, pontos. Esta tabela contém um ID e a GEOMETRIA para cada ponto.
2) Você tem mais uma tabela para os 'atributos', que são os pares chave / valor. Esta tabela possui o ID das colunas, POINT_ID (FK), KEY (varchar), VALUE (varchar).
Agora, cada ponto pode ter atributos praticamente infinitos armazenados assim:
O OpenStreetMaps funciona assim e funciona muito bem, veja aqui e aqui .
Para importar os dados, sugiro um script python.
fonte