До сих пор я делал некоторые преобразования из устаревших баз данных SQL в CouchDB. У меня всегда был несколько иной подход.
- Я использовал первичный ключ SQL-DB в качестве Document-Id. Это позволило мне импортировать снова и снова, не опасаясь дубликатов документов.
- Я выполнял построчный импорт вместо массового импорта. Это облегчает отладку. Я видел между 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