質問

MSSQL 2005には、CouchDBに移行したい行が15,000行あります。1行は1ドキュメントです。スキーマバインドXMLファイルに n 行を書き込むCLR-UDFがあります。スキーマにバインドされたXMLをJSONに変換するXSL変換があります。

これらの既存のツールを使用して、MSSQLからXMLからJSONに移行できると考えています。 JSONファイルごとに n 行をバッチ処理する場合、cURLのスクリプトを作成してファイルをループし、バルクAPI _bulk_docs を使用してCouchDBにPOSTできます。

これは機能しますか?これまでに誰かがこのような移行を行ったことがありますか?より良い方法をお勧めしますか?

役に立ちましたか?

解決

これまで、レガシーSQLデータベースからCouchDBへの変換をいくつか行いました。私はいつも多少異なるアプローチをしていました。

  1. SQL-DBの主キーをDocument-Idとして使用しました。これにより、ドキュメントの重複を恐れずに何度もインポートできました。
  2. 一括インポートではなく、行ごとのインポートを行いました。デバッグが簡単になります。インターネット接続で毎秒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 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top