到目前爲止,我做了一些從傳統SQL數據庫到CouchDB的轉換。我總是有一個不同的方法。
- 我用SQL-DB的主鍵作爲Document-Id。這使我可以一遍又一遍地導入,而不用擔心重複的文件。
- 我做了逐行導入而不是批量導入。它使調試更容易。我通過互聯網連接每秒鐘看到5-10次插入。雖然這不是閃電般的,但對我來說足夠快。我最大的數據庫是總共20GB的600.000份文件。在導入期間逐行膨脹數據庫,以便偶爾運行壓縮。然後再次,除非你的行很大15.000行聽起來不多。
我進口的代碼通常是這樣的:
def main():
options = parse_commandline()
server = couchdb.client.Server(options.couch)
db = server[options.db]
for kdnnr in get_kundennumemrs():
data = vars(get_kunde(kdnnr))
doc = {'name1': data.get('name1', ''),
'strasse': data.get('strasse', ''),
'plz': data.get('plz', ''), 'ort': data.get('ort', ''),
'tel': data.get('tel', ''), 'kundennr': data.get('kundennr', '')}
# update existing doc or insert a new one
newdoc = db.get(kdnnr, {})
newdoc.update(doc)
if newdoc != db.get(kdnnr, {}):
db[kdnnr] = newdoc
來源
2009-01-19 22:16:20
max