如果您在database1中有表Contacts
,并且您想将ContactID=123
复制到database2。复制所有列(除了ID
我猜)假设联系人表存在于两个数据库和相同的模式。而且两个数据库都在同一个服务器上。
列出插入语句中的每一列,但是有没有一种不列出所有列的方法?或者至少自动获取所有列。
我正在看SQL Server 2012
I tried:
SELECT * into [database2].[dbo].[Contacts] from [database1].[dbo].[Contacts] where [ContactsID]=123
but got error:
数据库中已经有一个名为"Contacts"的对象。
比如
DECLARE @Sql VARCHAR(MAX),
@COLUMNS VARCHAR(MAX)
SELECT @COLUMNS = COALESCE(@COLUMNS + ',', '') + COLUMN_NAME
FROM Database1.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = N'Contacts' AND COLUMN_NAME <> 'Id'
SET @Sql = CONCAT('INSERT INTO Database2.dbo.Contacts',
'SELECT ', @COLUMNS, ' FROM Database1.dbo.Contacts WHERE Id = 123')
EXEC (@Sql)
如果'Id'是一个标识列,并且你想在插入中包含它,只需为你要插入的表设置Identity_Insert
SET IDENTITY_INSERT Database2.dbo.Contacts ON
然后从Database1
插入*Insert Into Database2.dbo.Contacts
Select * From Database1.dbo.Contacts Where Id = 123
然后将表的Identity_Insert关闭
SET IDENTITY_INSERT Database2.dbo.Contacts OFF
您可以不指定colls,然后可能更新id:
DECLARE @newId int = 1;
INSERT INTO newTable SELECT * FROM initial_Table WHERE initial_Table.ContactsID=123;
UPDATE newTable SET ContactsID=@newId WHERE ContactsID=123;