將數據庫中一張表中數據複製到另一張表

--目標服務器表不存在時。在目標服務器運行:
select * into 目標服務器的表名 from openrowset
('msdasql','driver={sql server};server=源服務器ip;uid=源服務器數據庫用戶名;pwd=源服務器數據庫密碼','select * from 源服務器數據庫名..源服務器數據庫中表名')a

--目標服務器表存在時。前提條件,兩表字段必須相同。在目標服務器運行:
insert into 目標服務器的表名 select *  from openrowset
('msdasql','driver={sql server};server=源服務器ip;uid=源服務器數據庫用戶名;pwd=源服務器數據庫密碼','select * from 源服務器數據庫名..源服務器數據庫中表名')a

 

SQLServer中把某個表裏的記錄複製到另一個數據庫的表中 
 
現有數據庫a和數據庫b,數據庫a裏有表table1,數據庫b裏有表table2.

現在要把表table1裏的記錄複製到table2中,不同情況採用不同方法:

1. table1和table2表結構相同

use b

insert into table2 select * from a.dbo.table1

2. table1和table2表結構不相同

use b

insert into table2(c1,c2) select c1,c2 from a.dbo.table1

coolxiaoyi:c1,c2爲需要複製的列。

3. 如果還沒有創建表table2,可以直接將table1的表結構和記錄都複製到數據庫b中

use b

select * into table2 from a.dbo.table1

這樣做有一個問題,就是有時主外鍵關係不能複製過去(不知道什麼原因),需要在執行完sql語句後自己再設置一下主外鍵。

4. 注意table2中是否有自增長字段

如果有自增長字段,使用以上sql語句時會報錯:僅當使用了列列表並且 IDENTITY_INSERT 爲 ON 時,才能爲表'table2'中 的標識列指定顯式值。

可以先修改table2表,去掉自增長標識,複製完記錄後再修改回來。

或者用2.中的sql語句,不復制自增長字段,複製其他字段。

發佈了208 篇原創文章 · 獲贊 61 · 訪問量 98萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章