我有一个文件,其中包含数百万个这样大小的数组:
{
"leagues" : [{
"tier" : "SILVER",
"entries" : [{
"playerOrTeamId" : "359",
"playerOrTeamName" : "TryHard",
"division" : "II",
"leaguePoints" : "63",
"wins" : "65"
}],
"id" : "359"
}],
"summonerId" : "359",
"region" : "euw",
"updatedAt" : "1412122432"
},
例如,这是最小的数组。,有些数组具有额外的链接数组,这些数组包含与主数组相关的额外信息。示例:
{
"summonerId" : "477",
"region" : "euw",
"leagues" : [{
"tier" : "GOLD",
"entries" : [{
"playerOrTeamId" : "477",
"playerOrTeamName" : "Alucard662545",
"division" : "V",
"leaguePoints" : "9",
"wins" : "128"
}]
}, {
"tier" : "SILVER",
"entries" : [{
"playerOrTeamId" : "TEAM-8d6a3640-2da8-11e2-99dc-782bcb4ce61a",
"playerOrTeamName" : "CAPCOMP BE",
"division" : "V",
"leaguePoints" : "0",
"wins" : "24"
}]
}, {
"tier" : "BRONZE",
"entries" : [{
"playerOrTeamId" : "TEAM-8d6a3640-2da8-11e2-99dc-782bcb4ce61a",
"playerOrTeamName" : "CAPCOMP BE",
"division" : "I",
"leaguePoints" : "55",
"wins" : "8"
}]
}],
"updatedAt" : "1410786559"
},
我真的一直在拔头发,花了两天两夜的时间来弄清楚。我有存储这些信息的MongoDB,当我导出它时,我只能得到解码的JSON数组。我需要这些东西完全CSV格式。如何命名我可以CSV格式化一百万个这样的数组?
您有两个选项:
mongoexport是一个实用程序,用于生成存储在MongoDB实例中的数据的JSON或CSV导出。用法示例:
mongoexport --db users --collection contacts --csv --fieldFile fields.txt --out /opt/backups/contacts.csv
它从集合contacts
中获取''r-terminated fields.txt文件中指定的字段,每行一个,并将它们放入/opt/backups/contacts.csv.
任何其他方式读取JSON到一种语言和编写csv。python中的一个示例如下:
from pymongo import MongoClient
import csv
client = MongoClient()
db = client['test-database']
collection = db.test_collection
writer = csv.writer('/opt/backups/contacts.csv')
writer.writerow([k for k in collection])
writer writerows([[v for v in c] for c in collection])
并做同样的希望帮助。