[ Foro de SQL (y MySQL) ]

actualizar tabla para los valores leidos desde un archivo

13-May-2021 13:17
Invitado (xabi)
0 Respuestas


Buenas a todos,

Os expongo mi problema, necesito hacer un script para modificar un atributo de una tabla para cada uno de los proyectos que ha fallado.

En mi Base de datos SQL server tengo una tabla que se llama PackagePublishing, en la que cuando un proyecto tiene PublishingStatusId=5 significa que ha habido algún problema y no se ha publicado.
Lo que me van a pasar es un listado con los códigos de los proyectos que han fallado y en base a esta lista cambiar el atributo PublishingStatusId=3.

He empezado leyendo de un fichero y creando una tabla temporal, pero no se como hacer el update cuando tengo varios valores en el fichero.

Os pongo el código de lo que tengo hecho hasta ahora por si ayuda.

--creo una tabla temporal para almacenar el Id de los projectos fallados
DECLARE @CsvLocation NVARCHAR(2048)= N'g:\ProjectIDs.txt';
DROP TABLE IF EXISTS #tempProjectID;
CREATE TABLE #tempProjectID
(  
  texto NVARCHAR(MAX)
);
--leo del fichero
DECLARE @cmd NVARCHAR(2048)=
N'BULK INSERT #tempProjectID'  
  + N' FROM '''
  + @CsvLocation    
  + N''''
  + N' WITH'  
  + N' (FIRSTROW = 1,
    ROWTERMINATOR = ''\n'')';

EXEC sp_executesql @cmd;

--Aqui es donde tengo que hacer el update, este ejemplo es solo para el proyecto con id=fde51215-eb8f-47f1-a4d7-f8209ed26f7b
¿como se podría hacer para todos los valores del fichero? ¿con una variable y un while?


SELECT TOP (1000) [PackagePublishingId]
     ,[PackagePublishingUniqueId]
     ,[ProjectUniqueId]
     ,[ProjectId]
     ,[PublishingStatusId]
 FROM [SDLSystem].[proj].[PackagePublishing]
 where ProjectUniqueId = 'fde51215-eb8f-47f1-a4d7-f8209ed26f7b'
 update [SDLSystem].[proj].[PackagePublishing]
 set PublishingStatusId =3

USE [SDLSystem]
GO






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)