2010年11月28日日曜日

PythonでMongoDBに大量のデータをinsertしてみた

今回はPython2.xでMongoDBに大量のデータをinsertしてみました。

PythonでMongoDBにアクセスするには、PyMongoというモジュールを使用します。
http://api.mongodb.org/python/1.9%2B/index.html


掲載されているDocumentに従い、以下のようなコードを作成して実行しました。
尚、以前にも使用したCSV(neta.csv)をinsertネタに使っています。
#!/usr/bin/env python
import csv
import pymongo
import time

if __name__ == '__main__':
    start = time.time()
    c = pymongo.Connection()
    db = c.testdb
    reader = csv.reader(open("./neta.csv"))
    for row in reader:
        id = row[0]
        value = row[1]
        t = {"id":id , "value":value}
        db.hash.insert(t)
    end = time.time()
    print end-start
CSVを1件ずつ読み込み、1件ずつネタをhashコレクションにinsert()を実行します。MongoDBでは特にCommitの概念はありません。100万件のデータをinsertするのに要した時間は234.9sでした。