Pregunta

Tengo ~ 15k filas en MSSQL 2005 que quiero migrar a CouchDB, donde una fila es un documento. Tengo un CLR-UDF que escribe n filas en un archivo XML vinculado a un esquema. Tengo una transformación XSL que convierte el XML vinculado al esquema a JSON.

Con estas herramientas existentes, creo que puedo pasar de MSSQL a XML a JSON. Si agrego n filas por archivo JSON, puedo hacer un script de cURL para recorrer los archivos y PUBLICARlos en CouchDB usando la API masiva _bulk_docs .

¿Funcionará esto? ¿Alguien ha hecho una migración como esta antes? ¿Me puede recomendar una mejor manera?

¿Fue útil?

Solución

Hasta ahora hice algunas conversiones de bases de datos SQL heredadas a CouchDB. Siempre tuve un enfoque algo diferente.

  1. Utilicé la clave primaria de SQL-DB como Document-Id. Esto me permitió importar una y otra vez sin temor a duplicar documentos.
  2. Hice importaciones fila por fila en lugar de una importación masiva. Facilita la depuración. Vi entre 5-10 inserciones por segundo a través de una conexión a Internet. Si bien esto no es tan rápido como el rayo, fue lo suficientemente rápido para mí. Mi mayor base de datos es 600,000 documentos con un total de 20GB. fila por fila hincha la base de datos durante la importación, así que ejecuta la compactación ocasionalmente. Por otra parte, a menos que sus filas sean enormes, 15,000 filas no suenan mucho.

Mi código de importación generalmente se ve así:

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 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top