Estoy trabajando con datos del censo y descargué varios archivos CSV, cada uno con 600 columnas / variables. Me gustaría almacenarlos todos en una base de datos que se pueda consultar, pero todo lo que he probado hasta ahora (MS Access, tabla de geodatabase de Arc) trunca la tabla a 256 columnas. ¿Hay alguna solución para manejar tablas grandes que sean accesibles para alguien que no sea un DBA?
10
Respuestas:
PostgreSQL tiene un límite de columna de entre 250 y 1600 "dependiendo de los tipos de columna", y admite datos espaciales y consultas con la extensión PostGIS. Entonces me inclinaría a hacer dos cosas:
Primero, cuando una columna representa una categoría en lugar de texto libre, cree una tabla separada con esas categorías y reemplace la columna con una ID de entero y una restricción de clave externa, haciendo referencia a la tabla de categorías.
En segundo lugar, divida la Tercera Forma Normal dividiendo la mesa grande en dos o más de una manera lógica, y establezca una relación uno a uno entre ellos. Este no es quizás el más eficiente, pero si rara vez necesita algunos de los datos, entonces la consulta puede estar en las tablas que desee.
Otra alternativa completamente diferente sería utilizar una base de datos "NOSQL" como MongoDB, CouchDB, etc. No hay límites fijos para el tamaño de "fila", y si los datos no están presentes para un registro, no necesita ocupar espacio.
El soporte espacial no es tan bueno para este tipo de bases de datos bigtable, pero MongoDB admite consultas y datos espaciales 2D, y CouchDB parece tener una funcionalidad similar.
fuente
Recientemente he tratado exactamente el mismo problema con los archivos CSV del perfil censal de Statistics Canada que contienen 2172 columnas. Puede importar su csv a una geodatabase de archivos ESRI (FGDB) si tiene acceso a ArcGIS. Según ESRI, el formato FGDB puede manejar 65.534 campos en una clase de entidad o tabla .
En mi caso, pude importar mi archivo CSV de 2172 columnas en una tabla FGDB sin ningún problema.
Una vez que obtenga toda la tabla en el FGDB, puede dividirla de la forma que desee (por ejemplo, lógicamente o según las limitaciones de db), asegurándose de mantener una columna de identificación única, para asegurarse de que pueda volver a unirla como desee. necesario.
fuente
Corto:
Mi opción para datos con muchos atributos o con un tipo de atributo variable para cada objeto es usar el modelo de datos KEY / VALUE, se puede implementar y funciona muy bien en sql (recomendaría postgresql + postgis).
Descripción:
1) Tiene una tabla para características, digamos, puntos. Esta tabla contiene una ID y la GEOMETRÍA para cada punto.
2) Tiene una tabla más para los 'atributos' que son los pares clave / valor. Esta tabla tiene las columnas ID, POINT_ID (FK), KEY (varchar), VALUE (varchar).
Ahora cada punto podría tener atributos virtualmente infinitos almacenados así:
OpenStreetMaps funciona así y funciona muy bien, mira aquí y aquí .
Para importar los datos, sugeriría un script de Python.
fuente