none
Consulta sobre migración de datos SQL, situación específica RRS feed

  • Pregunta

  • Buenas tardes, estoy migrando una base de un sistema viejo a uno nuevo, ambos con SQL. Generalmente uso BCP para pasar a través del "queryout" generando un TXT intermedio con los datos de la tabla vieja para importándolos a la tabla nueva. Todo lo esto con BCP.

    El problema que tengo es el siguiente, pongo un ejemplo para que se entienda mejor:

    Tengo el TXT intermedio de la tabla dbo.PAISES_Vieja con dos columnas: id_pais, Desc_País (1       Argentina, 2       Brasil, 3       Marruecos) para llevar estos datos a la nueva tabla dbo.PAISES_Nueva

    Pero la tabla destino dbo.PAISES_Nueva contiene mas de dos columnas o campos por lo que siempre va a dar error al intentar importarlos desde la nueva. Se entiende? Las tablas origenes y destino son diferentes, por lo que el TXT me genera columnas correctas pero que no puedo ingresarlas en la destino ya que contiene mas o menos campos. Aunque a mí solo me interese insertar esas dos columnas del txt.

    O sea, con BCP se puede hacer esto? O tengo que recurrir a otra herramienta?

    Espero que se haya entendido.

    Muchas gracias.

    Rodrigo

     

    miércoles, 18 de enero de 2017 17:30

Respuestas

  • Gracias Williams por la respuesta, ya desarrollé un software para migrar datos de una tabla a otra sin necesidad de saber el tipo de datos. Lo paso a un txt intermedio para que de paso quede un log de las transacciones que realizó. Además lo voy a extender para que migre no solo de sql a sql sino que de cualquier base a otra parametrizando el programa.

    Gracias totales.

    Ss.

    Rodrigo

    miércoles, 25 de enero de 2017 12:56

Todas las respuestas

  • Hay herramientas más sencillas. Puedes usar el asistente para importar y exportar, que te deja seleccionar la tabla de origen y la de destino y editar el mapeode columnas.

    También podrías usar la opción de "generar scripts" en SSMS, elegir las tablas que quieras, pedirle en las opcionesavanzadas que exporte datos(y no esquema), y generar el script.Después editas el script con un editor de textos, y usas buscary reemplazar para cambiar el paréntesis final de los Values por los valores que quieras insertar en las columnas adicionales. Después ejecutas el script sobre el servidor de destino.

    miércoles, 18 de enero de 2017 20:02
  • Muchas gracias Alberto. En mi caso opté por hacer un programa en C# para migrar los datos generando un txt en el medio como log. 

    miércoles, 18 de enero de 2017 21:53
  • marozzir,

    Lo que comentas no es un problema que tenga que ver con la funcionalidad de la utilidad bcp, si la tabla destino contiene mas columnas -que la tabla origen- marcadas con la restricción NOT NULL entonces o le pasas el valor que corresponda o cambias la restricción a NULL. Si es un valor predecible entonces puedes escribir el literal, expresión o lo que fuese en la consulta que ejecuta la utilidad bcp, si no tienes como obtener los datos y no puedes cambiar la restricción a NULL entonces no veo forma ni herramienta mágica que haga ello.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 18 de enero de 2017 22:07
  • Gracias Williams por la respuesta, ya desarrollé un software para migrar datos de una tabla a otra sin necesidad de saber el tipo de datos. Lo paso a un txt intermedio para que de paso quede un log de las transacciones que realizó. Además lo voy a extender para que migre no solo de sql a sql sino que de cualquier base a otra parametrizando el programa.

    Gracias totales.

    Ss.

    Rodrigo

    miércoles, 25 de enero de 2017 12:56