Я работаю с данными переписи и скачал несколько CSV-файлов, каждый с 600-ю столбцами / переменными. Я хотел бы сохранить их все в базе данных с возможностью запроса, но все, что я пробовал до сих пор (MS Access, таблица базы геоданных Arc), усекает таблицу до 256 столбцов. Существуют ли решения для работы с большими таблицами, которые доступны для тех, кто не является администратором баз данных?
10
Ответы:
PostgreSQL имеет ограничение столбцов от 250 до 1600 «в зависимости от типов столбцов» и поддерживает пространственные данные и запросы с расширением PostGIS. Поэтому я был бы склонен сделать две вещи:
Во-первых, если столбец представляет категорию, а не свободный текст, создайте отдельную таблицу с этими категориями и замените столбец целочисленным идентификатором и ограничением внешнего ключа, ссылаясь на таблицу категорий.
Во-вторых, разбейте Third Normal Form, разделив большую таблицу на два или более логическим образом, и установите отношения один-к-одному между ними. Это, пожалуй, не самый эффективный, но если вам редко нужны некоторые данные, тогда запрос может быть просто на те таблицы, которые вы хотите.
Другой совершенно другой альтернативой может быть использование базы данных "NOSQL", такой как MongoDB, CouchDB и так далее. Не существует жестких ограничений размера «строки», и если данные отсутствуют для записи, это не должно занимать места.
Пространственная поддержка не так хороша для таких типов больших таблиц, но MongoDB поддерживает двухмерные пространственные запросы и данные, и CouchDB, похоже, обладает аналогичной функциональностью.
источник
Недавно я имел дело с той же самой проблемой с файлами CSV профиля переписи Статистического управления Канады, содержащими 2172 столбца. Вы можете импортировать свой CSV в файловую базу геоданных ESRI (FGDB), если у вас есть доступ к ArcGIS. Согласно ESRI, формат FGDB может обрабатывать 65 534 поля в классе пространственных объектов или таблице .
В моем случае мне удалось без проблем импортировать мой CSV-файл шириной 2172 в таблицу FGDB.
Как только вы поместите всю таблицу в FGDB, вы можете нарезать ее по своему усмотрению (например, логически или на основе ограничений по БД), убедившись, что вы сохраняете столбец уникального идентификатора, чтобы гарантировать, что вы можете объединить его вместе как необходимо.
источник
Коротко:
Мой вариант для данных с большим количеством атрибутов или с переменным типом атрибута для каждого объекта - использовать модель данных KEY / VALUE, она может быть реализована и очень хорошо работает в SQL (я бы порекомендовал postgresql + postgis).
Описание:
1) У вас есть одна таблица для функций, скажем, очков. Эта таблица содержит ID и ГЕОМЕТРИЮ для каждой точки.
2) У вас есть еще одна таблица для «атрибутов», представляющая собой пары ключ / значение. Эта таблица имеет идентификатор столбцов, POINT_ID (FK), KEY (varchar), VALUE (varchar).
Теперь каждая точка может иметь практически бесконечные атрибуты, хранящиеся так:
OpenStreetMaps работает так и работает очень хорошо, смотрите здесь и здесь .
Для импорта данных я бы предложил скрипт на python.
источник