如何將CSV/TSV數據導入到Couch DB?如何將CSV/TSV數據導入到Couch DB?
10
A
回答
7
python非常簡單。
#!/usr/bin/env python
from couchdbkit import Server, Database
from couchdbkit.loaders import FileSystemDocsLoader
from csv import DictReader
import sys, subprocess, math, os
def parseDoc(doc):
for k,v in doc.items():
if (isinstance(v,str)):
#print k, v, v.isdigit()
# #see if this string is really an int or a float
if v.isdigit()==True: #int
doc[k] = int(v)
else: #try a float
try:
if math.isnan(float(v))==False:
doc[k] = float(v)
except:
pass
return doc
def upload(db, docs):
db.bulk_save(docs)
del docs
return list()
def uploadFile(fname, uri, dbname):
print 'Upload contents of %s to %s/%s' % (fname, uri, dbname)
# #connect to the db
theServer = Server(uri)
db = theServer.get_or_create_db(dbname)
#loop on file for upload
reader = DictReader(open(fname, 'rU'), dialect = 'excel') #see the python csv module
#for other options, such as using the tab delimeter. The first line in your csv
#file should contain all of the "key" and all subsequent lines hold the values
#for those keys.
#used for bulk uploading
docs = list()
checkpoint = 100
for doc in reader:
newdoc = parseDoc(doc) #this just converts strings that are really numbers into ints and floats
#Here I check to see if the doc is already on the database. If it is, then I assign
#the _rev key so that it updates the doc on the db.
if db.doc_exist(newdoc.get('_id')):
newdoc['_rev'] = db.get_rev(newdoc.get('_id'))
docs.append(newdoc)
if len(docs)%checkpoint==0:
docs = upload(db,docs)
#don't forget the last batch
docs = upload(db,docs)
if __name__=='__main__':
filename = sys.argv[1]
uri = sys.argv[2]
dbname = sys.argv[3]
uploadFile(filename, uri, dbname)
4
Apache CouchDB只存儲JSON文檔。因此,要導入CSV,您必須將其轉換爲單個JSON文檔,然後正常發佈。
您可能需要編寫一個程序來遍歷每一行。將CSV行(值序列)轉換爲JSON文檔(鍵值序列:值對)。然後只需使用HTTP將其發送到CouchDB。
1
在Ruby中只是寫了一個腳本:csv2couchdb
2
我用這個在這裏:https://github/glynnbird/couchimport。如果您的CSV相當簡單,那麼只需簡化爲設置數據庫名稱並將CSV傳輸到couchimport即可。
相關問題
- 1. 導入到Couch-DB更改編碼
- 2. Zend Framework和Couch DB
- 3. 將XML DB數據導入Solr
- 4. Couch DB擴展和性能
- 5. 什麼是Couch DB?什麼是從Couch DB搜索和檢索數據的過程?
- 6. 如何將數據導入到rails中?
- 7. 如何將數據導入到SQL.js中?
- 8. 如何將數據導入到SAP
- 9. 如何將Movielens數據導入到Mysql
- 10. 如何在Excel中導入數據到沙發DB
- 11. 如何從magento導入數據到magento 1.7.0.2 db 1.4.1.1
- 12. Couch DB - 傳遞輸入參數以查看
- 13. 將數據導入到mysql中的db中
- 14. 將.db文件導入到MySql數據庫中
- 15. 使用Laravel 5.3將Youtube API數據導入到db中
- 16. 將數據從SQL DB Table的Column(DataSet)導入到TextBox中?
- 17. 無法將一個項目導入到MySQL數據庫db
- 18. 從EXCEL將數據插入到DB
- 19. 從一個MySQL db導入數據到另一個MySQL db?
- 20. rails/couch上的開放源代碼數據庫DB
- 21. 如何在導入數據到db時將csv文件的標題名稱映射到db表格
- 22. 將csv數據導入db數據庫(sqlite)
- 23. 將數據導入到dataGridView
- 24. 將數據導入到Sqlite3
- 25. 如何將數據從db注入到jade模板中?
- 26. 在BeforeClass方法如何將初始化數據插入到db
- 27. 如何將一堆數據插入到Oracle DB中?
- 28. 從geonames.org數據庫導入數據到MySQL DB
- 29. 插入數據到db
- 30. 如何使用數據集將數據導入數據網格?
它可以像mongoDB中的mongoimport一樣簡單嗎? – bbnn 2011-03-09 21:20:53
不錯的一個。感謝分享 :) – 2017-05-29 18:39:01