Automatizar update de unos atributos leyendo de un fichero de texto
Publicado por xabi (2 intervenciones) el 13/05/2021 13:28:19
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 han 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, me gustaría hacerlo de forma automatizada.
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.
Gracias de antemano
Os expongo mi problema, necesito hacer un script para modificar un atributo de una tabla para cada uno de los proyectos que han 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, me gustaría hacerlo de forma automatizada.
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.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
--creo una tabla temporal para almacenar el Id de los proyectos 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
Gracias de antemano
Valora esta pregunta


0