Je travaille avec des données de recensement et j'ai téléchargé plusieurs fichiers CSV, chacun avec 600 colonnes / variables. Je voudrais les stocker tous dans une base de données interrogeable, mais tout ce que j'ai essayé jusqu'à présent (MS Access, table de géodatabase Arc) tronque la table à 256 colonnes. Existe-t-il des solutions pour gérer les grandes tables accessibles à quelqu'un qui n'est pas un DBA?
10
Réponses:
PostgreSQL a une limite de colonnes comprise entre 250 et 1600 "selon les types de colonnes" et prend en charge les données spatiales et les requêtes avec l'extension PostGIS. Je serais donc enclin à faire deux choses:
Tout d'abord, lorsqu'une colonne représente une catégorie plutôt que du texte libre, créez un tableau séparé avec ces catégories et remplacez la colonne par un ID entier et une contrainte de clé étrangère, faisant référence au tableau des catégories.
Deuxièmement, brisez la troisième forme normale en divisant la grande table en deux ou plus de manière logique et établissez une relation un à un entre eux. Ce n'est peut-être pas le plus efficace, mais si vous avez rarement besoin de certaines données, la requête peut simplement être sur les tables que vous souhaitez.
Une autre alternative complètement différente consisterait à utiliser une base de données "NOSQL" telle que MongoDB, CouchDB, etc. Il n'y a pas de limites câblées à la taille des "lignes" et si les données ne sont pas présentes pour un enregistrement, elles n'ont pas besoin de prendre de la place.
La prise en charge spatiale n'est pas aussi bonne pour ces types de bases de données bigtable, mais MongoDB prend en charge les requêtes et données spatiales 2D, et CouchDB semble avoir des fonctionnalités similaires.
la source
J'ai récemment traité le même problème avec les fichiers CSV des profils de recensement de Statistique Canada contenant 2172 colonnes. Vous pouvez importer votre csv dans une géodatabase fichier ESRI (FGDB) si vous avez accès à ArcGIS. Selon ESRI, le format FGDB peut gérer 65 534 champs dans une classe d'entités ou une table .
Dans mon cas, j'ai pu importer mon fichier CSV 2172 colonnes dans une table FGDB sans aucun problème.
Une fois que vous avez placé la table entière dans la FGDB, vous pouvez la découper comme vous le souhaitez (par exemple, logiquement ou en fonction des limitations de la base de données), en vous assurant de conserver une colonne d'ID unique, pour vous assurer de pouvoir la réunir à nouveau en tant que nécessaire.
la source
En bref:
mon option pour les données avec beaucoup d'attributs ou avec un type d'attribut variable pour chaque objet est d'utiliser le modèle de données KEY / VALUE, il peut être implémenté et fonctionne très bien, en sql (je recommanderais postgresql + postgis).
Description:
1) Vous avez un tableau pour les caractéristiques, disons, les points. Ce tableau contient un ID et la GÉOMÉTRIE pour chaque point.
2) Vous avez une table de plus pour les «attributs» qui sont les paires clé / valeur. Cette table a les colonnes ID, POINT_ID (FK), KEY (varchar), VALUE (varchar).
Maintenant, chaque point pourrait avoir des attributs virtuellement infinis stockés comme ça:
OpenStreetMaps fonctionne comme ça et fonctionne très bien, voir ici et ici .
Pour importer les données, je suggérerais un script python.
la source