Преобразовать вложенный словарь / XML в плоский файл для SQLite - PullRequest
2 голосов
/ 27 февраля 2011

Я обыскивал сеть и, похоже, не могу найти подходящий пример, поэтому я решил спросить ... (Кстати, многое из этого является новым для меня - не все, только большинство.)

Проблема: попытка преобразовать вложенный словарь био / питона (или xml) опубликованных данных цитирования в плоскую (нормализованную) структуру, например, sqlite. Данные о цитировании были получены из публикации с использованием biopython и были проанализированы в словаре, но при необходимости могут быть извлечены как xml.

Не все цитаты будут иметь все поля / ключи, и не все поля / ключи будут иметь одинаковое количество элементов (авторов, терминов сетки, ссылок и т. Д.) И понимать, что это является частью процесса нормализации.

На этом мое практическое понимание заканчивается.

Тем не менее, я думаю, что процесс должен идти примерно так: сначала удалите / нормализуйте все уникальные поля (те, которые имеют по 1 на бумагу, например, заголовок, аннотация, дата, цитирование и т. Д.), Но говорят, что не принадлежность это будет связано с первым автором). Бумаги без реферата могут быть заполнены как ноль?

Затем перейдите, скажем, к авторам и снова создайте отдельную таблицу, используя PMID в качестве fk, а затем сделайте то же самое для различных других полей / ключей / элементов в отдельных таблицах, например, заголовков сетки, номеров EC, ref и т. Д. ..

Есть ли способ сделать это, чтобы удалить (выскочить) ключи / элементы из основного словаря, чтобы я мог визуально увидеть, что было сделано / нужно сделать (очевидно, оставив PMID)?

Опять же, заранее извиняюсь, если я задаю ослепительно очевидный вопрос посвященным - и я понимаю, что вы не можете поместить вложенную структуру в плоское пространство - просто ищите наименее тупой способ сделать это и, надеюсь, тот, который позволит мне убедиться, что все было правильно захвачено.

Большое спасибо, Крис

1 Ответ

0 голосов
/ 01 марта 2011

Быстрый вопрос - если у вас уже есть данные в XML, почему вы нормализуете их в формате SQL? Почему бы просто не использовать сырой XML? Berkeley DB XML - это библиотека (например, SQLite), которая ссылается на ваше приложение. Нет отдельного сервера для установки или обслуживания. Библиотека позволяет хранить и запрашивать данные XML, используя XPath или XQuery . Это очень быстро, имеет небольшой след. является транзакционным, восстанавливаемым и высоконадежным. Он также имеет функции HA, если это требуется.

Хранение данных в XML должно упростить весь процесс импорта данных и все же позволить вам запрашивать полуструктурированные данные.

...