[英]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.