sql sever中不同表間資料的複製

2021-06-16 17:02:13 字數 1787 閱讀 4226

一.同一資料庫中兩個不同的表中結構,資料的複製

有如下三個表:

表a:欄位1, 欄位2, 欄位3

表b:欄位1, 欄位2, 欄位3

表c:欄位1, 欄位2, 欄位3

現在想複製a表的字段1,b表的字段2,c表的字段3到表4中去。不需要表中的資料。

用sql語句應如何實現呢?

答:其實,這裡需要考慮乙個問題,所到的指定表是不是空表?所以,我們有以下兩種情況分別說說:       /*table4不存在時*/

select a.col1, b.col2, c.col3

into table4

from tablea a, tableb b, tablec c

where 1 = 0

但是,一旦表4已經存在的話,會報錯。如果是想在表4中增加這幾個字段,但這些欄位的資料不需要新增到表4中來 select

*into 表5

from

表4 m

left join

(select a.欄位1,b.欄位2,c.欄位3 from 表a a,表b b,表c c where 1<>1) n

on1=1

drop table 表4

exec sp_rename '表5','表4'

二、1.相同兩個表內容複製

insert into 目標資料庫名.dbo.表名 select * from 源資料庫名.dbo.表名

2.說明:複製表(只複製結構,源表名:a 新錶名:b)

sql: select * into b from a where 1<>1

3.說明:拷貝表(拷貝資料,源表名:a 目標表名:b)

sql: insert into b(a, b, c) select d,e,f from b;

二.不同資料庫(或不同主機上不同資料庫)間表的結構,資料的複製

建立兩個連線 !!

--建立鏈結伺服器

exec sp_addlinkedserver  'srv_lnk','','sqloledb','遠端伺服器名或ip位址'

exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'使用者名稱','密碼'

go --查詢示例

select * from srv_lnk.資料庫名.dbo.表名

--匯入示例

select * into 表 from srv_lnk.資料庫名.dbo.表名

這句話一定要寫在將要匯入的表所在的資料庫中

--以後不再使用時刪除鏈結伺服器

exec sp_dropserver 'srv_lnk','droplogins'

go --如果只是臨時訪問,可以直接用openrowset

--查詢示例

select * from openrowset('sqloledb'

,'sql伺服器名';'使用者名稱';'密碼'

,資料庫名.dbo.表名)

這裡好像有點問題,我試了一下應該是這樣的:select * from openrowset('sqloledb','192.168.24.200';

'abc';'123','20081141.dbo.style'),上面的語句中缺單引號

--匯入示例

select * into 表 from openrowset('sqloledb'

,'sql伺服器名';'使用者名稱';'密碼'

,資料庫名.dbo.表名)

在呼叫!!

SQLSEVER系統資料庫表

master select from msreplication options select from spt fallback db select from spt fallback dev select from spt fallback usg select from spt monitor...

不同activity之間資料的傳遞

不同activity之間的資料的傳遞有多種方式,這裡主要記錄兩種方式。第一種是通過bundle來傳遞資料,第二種方法就是直接通過intent來傳遞資料。通過bundle來傳遞資料,首先在主activity中將需要傳遞的資料封裝儲存到bundle中,該部分 如下 bundle bundle new b...

hadoop 不同集群之間資料拷貝

hadoop不同集群之間資料拷貝,拷貝時兩個集群要用active namenode去拷貝,datanode是不具備拷貝功能的,所以當我們把資料拿到hdfs路徑上時,要去判斷當前集群哪個主節點是active的,所以大致步驟為 資料落到hdfs上 beeline u jdbc hive2 e inser...