簡體   English   中英

如何將json文件加載到mongoDB中?

[英]How do I load a json file into mongoDB?

我有一個json文件,其中包含以下格式的一些信息:

{ "_id" : ObjectId("xxx"), "date_time" : ISODate("2014-06-11T19:16:45Z"), "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  
{ "_id" : ObjectId("yyy"), "date_time" : ISODate("2014-06-11T19:16:44Z"), "name" : "EEE", "phone_no" : "222", "address" : "FFF", "categories" : "GGG" }  
{ "_id" : ObjectId("zzz"), "date_time" : ISODate("2014-06-11T19:16:46Z"), "name" : "HHH", "phone_no" : "333", "address" : "III", "categories" : "JJJ" }

我正在使用的代碼是這樣的:

db = pymongo.MongoClient().test  
path ='/home/files'  
for f in listdir(path):  
    filepath = path+'/'+f  
    data = []     
    for line in open(filepath):  
        try:  
            data.append(json.loads(line))  
        except:  
            pass  
    db.temp.insert(data)  

這將導致錯誤,指出無法進行空批量寫入。 基本上, json.loads(line)永遠不會工作。 這是json文件的格式嗎? 變量“數據”應該以其他方式聲明嗎?

如何將此文件加載到mongoDB中

json不知道什么是ObjectID或ISODate ...它只能處理簡單類型...如果為這些分類定義了序列化規則,則可以嘗試使用yaml加載數據...或者您可以只使用簡單字符串在行中。

for line in open(filepath):
    line = re.sub("[a-zA-Z_]+\(([^)]+)\)","\\1",line)
    print json.loads(line)
    ... #do your thing

這將刪除類調用轉換

{ "_id" : ObjectId("xxx"), "date_time" : ISODate("2014-06-11T19:16:45Z"), "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  

{ "_id":"xxx", "date_time" : "2014-06-11T19:16:45Z", "name" : "AAA", "phone_no" : "111", "address" : "BBB", "categories" : "CCC" }  

然后您應該能夠使用json加載

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM