我在MSSQL2005中有~15k行,我想迁移到CouchDB,其中一行是一个文档。我有一个CLR-UDF写 n 到架构绑定XML文件的行。我有一个XSL转换,将架构绑定的XML转换为JSON。

有了这些现有的工具,我想我可以去MSSQL到XML到JSON。如果我批 n 每个JSON文件的行,我可以编写cURL脚本来循环文件,并使用批量API将它们发布到CouchDB _bulk_docs.

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

有帮助吗?

解决方案

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

  1. 我使用SQL-DB的主键作为Document-Id。这使我能够一遍又一遍地导入,而不必担心重复的文档。
  2. 我做了逐行导入,而不是批量导入。它使调试更容易。我通过互联网连接看到每秒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 
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top