gpt4 book ai didi

sql-server - 批量加载 CouchDB 时遇到的问题

转载 作者:数据小太阳 更新时间:2023-10-29 01:45:24 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

  1. 我使用 SQL-DB 的主键作为文档 ID。这让我可以一遍又一遍地导入,而不必担心重复的文档。
  2. 我是逐行导入而不是批量导入。它使调试更容易。我在 Internet 连接上看到每秒 5-10 次插入。虽然这不是闪电般的快,但对我来说已经足够快了。我最大的数据库是 600.000 个文档,总计 20GB。在导入过程中逐行膨胀数据库,所以偶尔运行压缩。话又说回来,除非你的行很大,15000 行听起来并不多。

我的导入代码通常是这样的:

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

关于sql-server - 批量加载 CouchDB 时遇到的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/444386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com