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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM