SQL SERVER 從其它數據庫中複製帶自增ID主鍵的表數據

SQL SERVER兩個結構相同(或不一樣)的表,互相導入數據,方法有兩種:數據庫

一、使用SQL SERVER 自帶的導出、導入功能,在庫名上右擊,「任務」,導出數據、導入數據,這個操做具體不就很少講了。網絡

二、使用語句直接複製,從XXX表複製數據到YYY表spa

步驟一、首先,須要設置下插入容許自增ID。table

SET IDENTITY_INSERT 表名YYY ON數據類型

若是提示 表 'XXX' 的 IDENTITY_INSERT 已經爲 ON。沒法爲表 'YYY' 執行 SET 操做。方法

那麼須要先將XXX表設置爲OFF,再執行上面的代碼將YYY設置爲ON。數據

SET IDENTITY_INSERT 表名XXX OFFword

步驟二、清空原表數據tab

若是原表主鍵ID不會重複,或者你的原表數據須要保留,那麼這一步能夠不須要,只要保證不重複便可。co

truncate table 表YYY

步驟三、複製數據

本地表複製

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 時失敗

相關文章
相關標籤/搜索