Вопрос

У меня есть около 15 тысяч строк в MSSQL 2005, которые я хочу перенести в CouchDB, где одна строка — это один документ.У меня есть CLR-UDF, который пишет н строки в привязанный к схеме XML-файл.У меня есть преобразование XSL, которое преобразует привязанный к схеме XML в JSON.

Я думаю, что с помощью этих существующих инструментов я смогу перейти от MSSQL к XML и JSON.Если я пакетирую н строк в файле JSON, я могу написать сценарий cURL для циклического перебора файлов и отправить их в CouchDB с помощью массового API. _bulk_docs.

Будет ли это работать?Кто-нибудь делал подобную миграцию раньше?Можете ли вы порекомендовать лучший способ?

Это было полезно?

Решение

На данный момент я выполнил некоторые преобразования из устаревших баз данных SQL в CouchDB.У меня всегда был несколько иной подход.

  1. Я использовал первичный ключ SQL-DB в качестве идентификатора документа.Это позволило мне импортировать снова и снова, не опасаясь дублирования документов.
  2. Я выполнил импорт построчно вместо массового импорта.Это упрощает отладку.Я видел 5-10 вставок в секунду при подключении к Интернету.Хоть это и не молниеносно, для меня этого оказалось достаточно.Моя самая большая база данных — 600 000 документов общим объемом 20 ГБ.строка за строкой раздувает базу данных во время импорта, поэтому время от времени запускайте сжатие.Опять же, если ваши строки не огромны, 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