SQL SERVER兩個結構相同(或不同)的表,互相導入數據,方法有兩種:
1、使用SQL SERVER 自帶的導出、導入功能,在庫名上右擊,“任務”,導出數據、導入數據,這個操作具體不就不多講了。
2、使用語句直接復制,從XXX表復制數據到YYY表
步驟1、首先,需要設置下插入允許自增ID。
SET IDENTITY_INSERT 表名YYY ON
如果提示 表 'XXX' 的 IDENTITY_INSERT 已經為 ON。無法為表 'YYY' 執行 SET 操作。
那么需要先將XXX表設置為OFF,再執行上面的代碼將YYY設置為ON。
SET IDENTITY_INSERT 表名XXX OFF
步驟2、清空原表數據
如果原表主鍵ID不會重復,或者你的原表數據需要保留,那么這一步可以不需要,只要保證不重復即可。
truncate table 表YYY
步驟3、復制數據
本地表復制
INSERT INTO 表YYY (
[Id] ,
[字段1],
[字段2])
SELECT
[Id] ,
[字段1],
[字段2]
FROM 表XXX
跨機器跨網絡復制:
INSERT INTO 表YYY (
[Id] ,
[字段1],
[字段2])
SELECT
[Id] ,
[字段1],
[字段2]
FROM opendatasource( 'SQLOLEDB','Data Source=172.0.0.2;User ID=user;Password=pass').數據庫.表XXX
需要注意的是,必須要兩邊都指定具體的字段名稱,不能用*號,否則可能會提示以下錯誤:
僅當使用了列列表並且 IDENTITY_INSERT 為 ON 時,才能為表'YYY'中的標識
或者會因為字段不對應而提示一些奇怪的錯誤,例如:
在將 varchar 值 'AAAA' 轉換成數據類型 int 時失敗