我是這個問題相關領域的開始程序員,所以如果可能的話,避免假設我已經知道很多東西是有幫助的。將大型數據集導入數據庫
我想將OpenLibrary數據集導入本地Postgres數據庫。在導入之後,我打算將它用作Ruby on Rails應用程序的開始種子,該應用程序將包含有關書籍的信息。
的OpenLibrary數據集可在這裏,在修改的JSON格式: http://openlibrary.org/dev/docs/jsondump
我只需要我的應用程序非常基本的信息,比什麼是在垃圾場提供的要少得多。我只是試圖擺脫書名,作者姓名以及書籍和作者之間的關係。
下面是他們的數據集中的兩個典型條目,第一個是作者,第二個是書(他們似乎每本書的每個版本都有一個條目)。在包含實際的JSON數據庫轉儲之前,條目似乎以主鍵和類型爲先導。
/一個/ OL2A /類型/作者{ 「名稱」: 「U. Venkatakrishna饒」, 「PERSONAL_NAME」: 「U. Venkatakrishna饒」, 「LAST_MODIFIED」:{ 「類型」:「/類型/ datetime「,」value「:」2008-09-10 08:44:01.978456「},」key「:」/ a/OL2A「,」birth_date「:」1904「,」type「:{」key「:」/type/author「},」id「:99,」revision「:3}
/b/OL345M/type/edition {」publishers「:[」社會科學研究項目,地理系,大學Dacca「],」pagination「:」ii,54 p。「,」title「:」Fayadabad地區的土地使用「,」lccn「:[」sa 65000491「],」subject_place「達卡地區。「],」number_of_pages「:54,」languages「:[{」comment「:」initial import「,」code「:」eng「,」name「:」English「,」key「:」/ l/eng「}],」lc_classifications「:[」S471.P162 E23「] ,「publisher_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 and F. Karim汗「,」oclc_numbers「:[」4671066「],」文稿「:[」汗,Fazle Karim,合着者。「],」主題「:[」土地使用 - 東巴基斯坦 - 達卡地區。「] }
未壓縮轉儲的大小非常大,作者列表大約2GB,書籍版本列表大小爲18GB。 OpenLibrary本身並沒有提供任何工具,它們提供了一個簡單的未優化的Python腳本來讀取示例數據(與實際的轉儲不同,它採用純JSON格式),但他們估計如果修改了它們以用於其實際數據,它會花2個月(!)完成加載數據。
我該如何讀取數據庫?我想我需要編寫一個程序來做到這一點。我應該怎樣做才能在合理的時間內完成什麼語言和指導?我有任何經驗的唯一腳本語言是Ruby。
當你說我可以只爲作者的文件Postgres複製命令,你是什麼意思?我是否也需要將其處理成Postgres期望使用此類腳本的格式? – user294140 2010-03-16 01:35:16
當然可以。我爲你做了兩個文件中較難的部分,並假定你可以自己做更簡單的文件。 – 2010-03-16 05:16:22
再次感謝,得到了解決,你的幫助是無價的。 – user294140 2010-03-17 05:58:47