当前位置:  开发笔记 > 前端 > 正文

在批量加载CouchDB时遇到问题

如何解决《在批量加载CouchDB时遇到问题》经验,为你挑选了1个好方法。

我在MSSQL 2005中有大约15k行,我想迁移到CouchDB,其中一行是一个文档.我有一个CLR-UDF,它将n行写入模式绑定的XML文件.我有一个XSL转换,它将模式绑定的XML转换为JSON.

使用这些现有工具,我认为我可以将MSSQL转换为XML到JSON.如果我为每个JSON文件批量n行,我可以编写脚本cURL来遍历文件并使用批量API将它们发布到CouchDB _bulk_docs.

这会有用吗?以前有人做过这样的迁移吗?你能推荐一个更好的方法吗?



1> max..:

到目前为止,我做了一些从遗留SQL数据库到CouchDB的转换.我总是有一个不同的方法.

    我使用SQL-DB的主键作为Document-Id.这让我可以反复导入而不用担心重复文件.

    我做了逐行导入而不是批量导入.它使调试更容易.我通过Internet连接看到每秒5-10次插入.虽然这不是闪电般快,但它对我来说足够快.我最大的数据库是600.000份文件,共20GB.在导入期间逐行膨胀数据库,以便偶尔运行压缩.然后再次,除非你的行是巨大的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 

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有