Mise à jour de tables sans les nommer toutes les colonnes
J'ai trouvé un moyen de faire deux tables à partir de différentes bases de données correspondent les uns aux autres à l'aide de ce modèle:
INSERT [DestDB].[dbo].[TABLE]
SELECT source.* FROM
[SourceDB].[dbo].[TABLE] AS source
LEFT OUTER JOIN
[DestDB].[dbo].[TABLE] AS dest
ON
source.[PKColumn] = dest.[PKColumn]
WHERE dest.[PKcolumn] IS NULL
UPDATE dest
SET
dest.[PK_COLUMN1] = source.[PK_COLUMN1]
,dest.[COLUMN2] = source.[COLUMN2]
,dest.[COLUMN3] = source.[COLUMN3]
,dest.[COLUMN4] = source.[COLUMN4]
,dest.[COLUMN5] = source.[COLUMN5]
,dest.[COLUMN6] = source.[COLUMN6]
,dest.[COLUMN7] = source.[COLUMN7]
,dest.[COLUMN8] = source.[COLUMN8]
FROM
[SourceDB].[dbo].[TABLE] AS source
INNER JOIN
[DestDB].[dbo].[TABLE] AS dest
ON source.[PK_Column1] = dest.[PK_Column1]
Cependant quelques tables, je travaille avec avoir au moins 200 colonnes et alors qu'il est possible de le faire grâce à la puissance de Copier + Coller, j'ai juste besoin de savoir si il y a une manière qui n'implique pas de moi en train de Syndrome du Tunnel Carpien.
Je suis à l'aide de Microsoft SQL Server 2005.
Des conseils?
Faire toutes les colonnes des deux tables (dest et source) match?
Oui, ils ne correspondent.
Oui, ils ne correspondent.
OriginalL'auteur Samter | 2012-08-27
Vous devez vous connecter pour publier un commentaire.
Je ne pense pas que vous pouvez mettre à jour les colonnes sans les nommer, mais vous pouvez utiliser SQL et le sys.les colonnes de la vue de script pour vous:
-- output --
Le seul autre moyen est de ne PAS mettre à jour, mais au lieu de les tronquer le nom du tableau et effectuer une
SELECT INTO
comment vous pouvez le faire fonctionner est à travers la suppression de l'ALIAS: mise à JOUR DestTable ENSEMBLE RecordType = Source.RecordType DE sourceTable source
Oui, les alias peuvent être utilisées dans la mise à jour des déclarations. Mais le code fonctionne tout aussi bien sans aussi.
OriginalL'auteur Chris Gessler
Vous pouvez utiliser le sql dynamique (et l'info @ChrisGessler) à faire ce que vous voulez.
Une autre possibilité, si vous ne pouvez pas ou ne souhaitez pas l'utiliser, c'est:
L'étape 1 peut être quelque chose comme ceci:
N'oubliez pas de passer le nouvelletable à la fin.
également, cela répond vraiment à un autre scénario dans lequel vous êtes à la suppression de lignes dans le tableau dest.. qui , je trouve, à la rareté des mises à jour.
OriginalL'auteur aF.