Ich arbeite mit Volkszählungsdaten und habe mehrere CSV-Dateien mit jeweils 600 Spalten / Variablen heruntergeladen. Ich möchte sie alle in einer abfragefähigen Datenbank speichern, aber alles, was ich bisher versucht habe (MS Access, Arc-Geodatabase-Tabelle), schneidet die Tabelle auf 256 Spalten ab. Gibt es Lösungen für den Umgang mit großen Tabellen, auf die jemand zugreifen kann, der kein DBA ist?
10
Antworten:
PostgreSQL hat ein Spaltenlimit zwischen 250 und 1600 "abhängig von den Spaltentypen" und unterstützt räumliche Daten und Abfragen mit der PostGIS-Erweiterung. Ich wäre also geneigt, zwei Dinge zu tun:
Wenn eine Spalte eine Kategorie anstelle von freiem Text darstellt, erstellen Sie zunächst eine separate Tabelle mit diesen Kategorien und ersetzen Sie die Spalte durch eine Ganzzahl-ID und eine Fremdschlüsseleinschränkung, wobei Sie auf die Kategorietabelle verweisen.
Zweitens: Brechen Sie die dritte Normalform, indem Sie den großen Tisch auf logische Weise in zwei oder mehr Teile aufteilen und eine Eins-zu-Eins-Beziehung zwischen ihnen herstellen. Dies ist vielleicht nicht die effizienteste, aber wenn Sie selten einige der Daten benötigen, kann sich die Abfrage nur auf den gewünschten Tabellen befinden.
Eine andere völlig andere Alternative wäre die Verwendung einer "NOSQL" -Datenbank wie MongoDB, CouchDB usw. Es gibt keine fest verdrahteten Grenzen für die Zeilengröße. Wenn für einen Datensatz keine Daten vorhanden sind, muss kein Speicherplatz belegt werden.
Die räumliche Unterstützung ist für diese Arten von Bigtable-Datenbanken nicht so gut, aber MongoDB unterstützt räumliche 2D-Abfragen und -Daten, und CouchDB scheint ähnliche Funktionen zu haben.
quelle
Ich habe mich kürzlich mit genau demselben Problem mit CSV-Dateien mit dem Volkszählungsprofil von Statistics Canada befasst, die 2172 Spalten enthalten. Sie können Ihre CSV in eine ESRI File Geodatabase (FGDB) importieren, wenn Sie Zugriff auf ArcGIS haben. Laut ESRI kann das FGDB-Format 65.534 Felder in einer Feature-Class oder Tabelle verarbeiten .
In meinem Fall konnte ich meine 2172 spaltenweite CSV-Datei ohne Probleme in eine FGDB-Tabelle importieren.
Sobald Sie die gesamte Tabelle in die FGDB aufgenommen haben, können Sie sie nach Belieben aufteilen (z. B. logisch oder basierend auf DB-Einschränkungen). Stellen Sie dabei sicher, dass Sie eine eindeutige ID-Spalte behalten, um sicherzustellen, dass Sie sie wieder zusammenfügen können erforderlich.
quelle
Kurz:
Meine Option für Daten mit vielen Attributen oder mit variablem Attributtyp für jedes Objekt ist die Verwendung des KEY / VALUE-Datenmodells. Es kann in SQL implementiert werden und funktioniert sehr gut (ich würde postgresql + postgis empfehlen).
Beschreibung:
1) Sie haben eine Tabelle für Funktionen, z. B. Punkte. Diese Tabelle enthält eine ID und die GEOMETRIE für jeden Punkt.
2) Sie haben eine weitere Tabelle für die 'Attribute', die die Schlüssel / Wert-Paare sind. Diese Tabelle enthält die Spalten ID, POINT_ID (FK), KEY (varchar), VALUE (varchar).
Jetzt könnten für jeden Punkt praktisch unendlich viele Attribute gespeichert werden:
OpenStreetMaps funktioniert so und funktioniert sehr gut, siehe hier und hier .
Um die Daten zu importieren, würde ich ein Python-Skript vorschlagen.
quelle