2014-10-08 109 views
0

我有一個包含數百萬這樣大小的陣列的文件:解析解碼JSON數組爲CSV

{ 
    "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格式一百萬像這樣的數組?

+4

除列分隔符之外,csv沒有「格式」。沒有規定嵌套記錄。只有列。而且,由於您提供了** NO **詳細信息,說明您希望您的csv的外觀如何,因此我們無法幫助您 - 即使有人確實希望爲您編寫代碼。我們在這裏幫助,而不是爲你做你的工作。 – 2014-10-08 21:05:54

+0

有點苛刻的馬克B,但@ floppy軟盤到您的問題,我想你可能不得不考慮創建一個使用java腳本的csv字符串,並循環你當前的js對象來提取然後添加到你的csv字符串。這是否超出了你的想法?顯然,我會從一個較小的數據集開始測試。 – 2014-10-08 21:10:45

+0

我沒有發現馬克的事實和真實的陳述是苛刻的先生康科拉託。 – 2014-10-08 21:12:44

回答

1

你有兩個選擇:

mongoexport是產生JSON或存儲在MongoDB實例數據的CSV文件導出的工具。用例:

mongoexport --db users --collection contacts --csv --fieldFile fields.txt --out /opt/backups/contacts.csv 

這需要在\ R-終止fields.txt文件中指定的字段,每行一個,從集合contacts,並將它們放入/opt/backups/contacts.csv。

任何其他讀取JSON的方式爲一種語言並編寫csv。蟒蛇的一個例子如下:

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]) 

...並做同樣的希望幫助。