none
Actualizar datos masivamente en sql server 2005 RRS feed

  • Pregunta

  • Saludos mi pregunta es la siguiente tengo un base en sql server 2005 con una tabla llamada articulos y dentro de esta la columna clave y la columna nombre quisiera que solo me actualize la comluna de nombre en base a la clave ejemplo clave 1245 nombre cereales y al actualizar clave 1245 nombre cereales 100g

    Esto lo haria aprox para 3000 filas

    sábado, 2 de noviembre de 2019 19:08

Todas las respuestas

  • Para actualizar el nombre en base a la clave simplemente envías una sentencia update que condicione por la clave:

    UPDATE laTabla SET nombre="cereales 100g" WHERE clave=1245

    Para solo 3000 filas no te molestes en buscar nada más sofisticado. Simplemente envía las 3000 sentencias UPDATE y ya está. Otra cosa sería si tuvieras 3 millones de filas y quisieras actualizarlas a la mayor velocidad posible. En ese caso te diría que usaras un Bulk Insert para insertar los cambios sobre una tabla auxiliar, y luego un Merge desde la auxiliar a la principal y borrar la auxiliar.

    sábado, 2 de noviembre de 2019 19:51
  • Lo que pasa es que todas son claves diferentes para ser mas especificos la clave quiero que se quede asi y lo que pasa es que tengo un archivo en donde tengo la clave y el nombre nada mas que en este el nombre de cada una de las claves a cambiado entonces quisiera actualizar todas las claves con sus nuevos nombres
    sábado, 2 de noviembre de 2019 20:24
  • Sí, con la sentencia que te he puesto la clave queda igual y solo se cambia el nombre.

    Si tienes las claves y nombres en un fichero, lo que tienes que hacer es generar una sentencia como la que te he puesto por cada una de las líneas del fichero. Es decir, si el fichero tiene 3000 líneas, tienes que escribir 3000 sentencias UPDATE y en cada una de ellas poner una clave y una descripción diferentes, tomándolas del fichero. Esto es bastante simple de hacer si conoces algún lenguaje de programación desde el que puedas leer el fichero y mandar a ejecutar sentencias SQL.

    Si no conoces ningún lenguaje y quieres hacerlo directamente desde SQL, una opción es importar el fichero a una tabla temporal usando desde SSMS el asistente para importar y exportar. Una vez que tengas esa tabla con las claves y nombres, puedes transferir esos datos a la tabla "real" usando un Update...From o una sentencia Merge.

    Perdón, acabo de ver que es SQL Server 2005, así que solo puede ser update...from; la Merge la introdujeron en el 2008 si no recuerdo mal.

    sábado, 2 de noviembre de 2019 22:09
  • Lo que te dice alberto es lo más sencillo, otra alternativa es que uses el asistente de importación para convertir ese fichero en una tabla 

    digamos que tu tabla origen los campos se llaman id,nombre, y en la tabla que acabas de importar con los nombres corregidos se llama igual

    update t

    set t.nombre=o.nombre

    from tablaqueyatengo as  t

    inner join tablaimportadaporelwizard as o 

    on t.id=o.id

    Este comando actualiza todos los registros sobreescribiendo el nombre. 


    Comparte lo que sepas, aprende lo que no sepas (FGG)
    portalSQL
    El rincón del DBA

    lunes, 4 de noviembre de 2019 16:05
    Moderador