【发布时间】:2011-01-27 19:05:54
【问题描述】:
我是这个问题相关领域的初级程序员,所以如果可能的话,避免假设我已经了解很多会很有帮助。
我正在尝试将 OpenLibrary 数据集导入本地 Postgres 数据库。导入后,我计划将其用作 Ruby on Rails 应用程序的起始种子,该应用程序将包含书籍信息。
OpenLibrary 数据集在此处提供,采用修改后的 JSON 格式: http://openlibrary.org/dev/docs/jsondump
我的应用程序只需要非常基本的信息,比转储中提供的信息要少得多。我只是想找出书名、作者姓名以及书籍与作者之间的关系。
下面是他们数据集中的两个典型条目,第一个是作者的,第二个是一本书的(他们似乎对一本书的每个版本都有一个条目)。在包含实际的 JSON 数据库转储之前,这些条目似乎以主键开头,然后以类型开头。
/a/OL2A /type/author {"name": "U. Venkatakrishna Rao", "personal_name": "U. Venkatakrishna Rao", "last_modified": {"type": "/type/datetime", “值”:“2008-09-10 08:44:01.978456”},“键”:“/a/OL2A”,“出生日期”:“1904”,“类型”:{“键”:“/type/ author"}, "id": 99, "revision": 3}
/b/OL345M /type/edition {"publishers": ["Social Science Research Project, Dept. of Geography, University of Dacca"], "pagination": "ii, 54 p.", "title": "Fayadabad 地区的土地利用", "lccn": ["sa 65000491"], "subject_place": ["东巴基斯坦", "Dacca region."], "number_of_pages": 54, "languages": [{"comment ": "初始导入", "code": "eng", "name": "English", "key": "/l/eng"}], "lc_classifications": ["S471.P162 E23"], " publish_date”:“1963”,“publish_country”:“pk”,“key”:“/b/OL345M”,“authors”:[{“birth_date”:“1911”,“name”:“Nafis Ahmad”,“ key": "/a/OL302A", "personal_name": "Nafis Ahmad"}], "publish_places": ["Dacca, East Pakistan"], "by_statement": "[by] Nafis Ahmad 和 F. Karim Khan。 ", "oclc_numbers": ["4671066"], "contributions": ["Khan, Fazle Karim, 共同作者。"], "subjects": ["土地利用 -- 东巴基斯坦 -- 达卡地区。"]}
未压缩转储的大小非常巨大,作者列表约为 2GB,书籍版本列表约为 18GB。 OpenLibrary 本身并没有为此提供任何工具,它们提供了一个简单的未优化 Python 脚本来读取示例数据(与实际转储不同的是纯 JSON 格式),但他们估计如果对其进行修改以用于其实际数据,它将需要 2 个月 (!) 才能完成数据加载。
如何将其读入数据库?我想我需要编写一个程序来做到这一点。关于我应该如何在合理的时间内完成它的语言和任何指导?我唯一使用过的脚本语言是 Ruby。
【问题讨论】:
标签: ruby-on-rails json postgresql import dataset