2012-09-17 121 views
7

我想寫一個腳本來從我的mongoDB數據庫生成一個CSV文件,我想知道最方便的版本!使用pymongo將MongoDB導出爲CSV

首先讓我從集合的結構開始。

MyDataBase -> setting 
       users 
       fruits 
在制定

我有類似

setting -> _id 
      data 
      _tenant 

,我以後的事情,就是讓一個CSV文件進行配置文件的數據 他們有一些字段/屬性,如「名「,」地址「,」郵政編碼「,」電子郵件「,年齡等,而不是必需的所有這些配置文件都具有所有文件/屬性,甚至其中一些看起來像我不感興趣的集合(有子分支)根本!

所以,我的代碼是蟒蛇到目前爲止是像這些

myquery = db.settings.find() # I am getting everything ! 
output = csv.writer(open('some.csv', 'wt')) # writng in this file 

for items in myquery[0:10]: # first 11 entries 
    a = list(items['data']['Profile'].values()) # collections are importent as dictionary and I am making them as list 
    tt = list() 
    for chiz in a: 
     if chiz is not None: 
      tt.append(chiz.encode('ascii', 'ignore')) #encoding 
     else: 
      tt.append("none") 
    output.writerow(tt) 

這些字段/屬性不具有neccessary各個領域,甚至還可以有些是集合(與支行),並會導入爲字典!所以,我必須將它們轉換爲列表,總之,在這樣的過程中有很少的事情需要注意,並且看起來並不那麼直截了當!

我的問題可能聽起來很普遍,但它是製作此類報告的典型方法嗎?!如果不是的話,你可以說清楚嗎?!

+1

你有沒有試過[mongoexport](http://www.mongodb.org/display/DOCS/mongoexport)?它會將收藏集導出爲CSV格式,並且可以爲您節省滾動自己的工具的工作量。 – Stennie

+0

好吧,我希望「mongoexport」也在python中工作!或者有一些不錯的IDE讓mongodb能夠像csv/table格式一樣使用,更簡單。 – user702846

+0

有幾種不同的[Admin UI](http://www.mongodb.org/display/DOCS/Admin+UIs),但「nice」是主觀的,因爲每個人都有不同的要求和偏好。您可能想要考慮的一個橫向選項是[報告工具](http://www.mongodb.org/display/DOCS/Business+Intelligence)。例如,Jasper/[iReport](http://jasperforge.org/projects/ireport)是一個支持MongoDB的可視化報表設計器,可以導出爲多種格式,包括CSV。 – Stennie

回答

1

是的,我使用相同的方式。 它清晰而快速,它也可以在沒有任何附加庫的情況下工作。