SQL SERVER 2008中如何跨越多个数据库取数,整合到一张新视图里面?

SQL SERVER 2008中如何跨越多个数据库取数,整合到一张新视图里面?,第1张

本机数据间的跨度,引用举例:

联合查询这两个表

select * from dbA.dbo.tb1 t1

left join dbB.dbo.tb2 t2 on t1.key1=t2.key2

关键:表明的前缀:dbA.dbo.tb1,即:数据库名.dbo.表名

计算机网络间数据库跨度,举例:

SELECT I.*, M.*

  FROM OPENROWSET('SQLOLEDB', '192.168.10.2' 'sa' '123', [Database1].[dbo].[Table1]) I

   INNER JOIN (

      SELECT DISTINCT P.IPSAppID AppId, P.DepartmentId, C.CategoryId, T.Creator 

        FROM OPENROWSET

  ('SQLOLEDB', '192.168.10.1' 'sa' '123', [Database2].[dbo].[table2]) P LEFT JOIN (

SELECT DISTINCT LTRIM(DepartmentId) DepartmentId, UserName Creator 

    FROM OPENROWSET('SQLOLEDB', '192.168.10.1' 'sa' '123', [Database3].[dbo].[view1]) 

    WHERE UserName IN 

(SELECT DISTINCT Creator 

    FROM OPENROWSET('SQLOLEDB', '192.168.10.1' 'sa' '123', [Database1].[dbo].[Table1]) WHERE AppId = '8cefca00-9733-4976-951a-e19346603717' AND CategoryId = 'b14b4852-c0e4-4db6-a91e-704b699a8fa2')) T 

ON P.DepartmentId = T.DepartmentId 

LEFT JOIN OPENROWSET('SQLOLEDB', '192.168.10.1' 'sa' '123', [Database2].[dbo].[Table3]) C ON C.AppId = P.IPSAppID 

WHERE P.ClassId IS NULL AND T.Creator IS NOT NULL AND C.CategoryName = 'activity') M 

ON M.Creator = I.Creator 

WHERE I.AppId = '8cefca00-9733-4976-951a-e19346603717' AND I.CategoryId = 'b14b4852-c0e4-4db6-a91e-704b699a8fa2'

如果在同一个服务器中的不同数据库,可以跨数据库建视图。

比如有两个数据库A 和B B数据库中有个表TA

那么可以在A数据库中建个视图,取自B数据库中表TA中的数据

use A

go

creat view B_TA as

select * from B..TA

go

这样就在A数据库中建一个视图B_TA 数据取自B数据库中TA表

/12分步阅读

打开SQL Server Management Studio,按图中的路径进入导入数据界面。

2/12

导入的时候需要将EXCEL的文件准备好,不能打开。点击下一步

3/12

数据源:选择“Microsoft Excel”除了EXCEL类型的数据,SQL还支持很多其它数据源类型。

4/12

选择需要导入的EXCEL文件。点击浏览,找到导入的文件确定。

5/12

再次确认文件路径没有问题,点击下一步。

6/12

默认为是使用的WINODWS身份验证,改为使用SQL身份验证。输入数据库密码,注意:数据库,这里看看是不是导入的数据库。也可以在这里临时改变,选择其它数据库。

7/12

选择导入数据EXCEL表内容范围,若有几个SHEET表,或一个SHEET表中有些数据我们不想导入,则可以编写查询指定的数据进行导入。点击下一步。

8/12

选择我们需要导入的SHEET表,比如我在这里将SHEET表名改为price,则导入后生面的SQL数据库表为price$。点击进入下一步。

9/12

点击进入下一步。

10/12

在这里完整显示了我们的导入的信息,执行内容,再次确认无误后,点击完成,开始执行。

11/12

可以看到任务执行的过程和进度。

12/12

执行成功:我们可以看看执行结果,已传输1754行,表示从EXCEL表中导入1754条数据,包括列名标题。这样就完成了,执行SQL查询语句:SELECT * FROM price$就可以查看已导入的数据内容。

1. 表结构完全一样

insert into 表1

select * from 表2

2. 表结构不一样(这种情况下得指定列名)

insert into 表1 (列名1,列名2,列名3)

select 列1,列2,列3 from 表2


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10715485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存