Hasta ahora hice algunas conversiones de bases de datos SQL heredadas a CouchDB. Siempre tuve un enfoque algo diferente.
- Utilicé la clave primaria del SQL-DB como Document-Id. Esto me permitió importar una y otra vez sin temor a duplicar documentos.
- Hice importaciones fila por fila en lugar de una importación masiva. Hace que la depuración sea más fácil. Vi entre 5 y 10 inserciones por segundo a través de una conexión a Internet. Si bien esto no es muy rápido, fue lo suficientemente rápido para mí. Mi base de datos más grande es 600,000 documentos que suman 20GB. fila a fila hincha la base de datos durante la importación, de modo que ejecute la compactación ocasionalmente. Por otra parte, a menos que sus filas sean enormes, 15,000 filas no suenan demasiado.
Mi código de importación por lo general es el siguiente:
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