Oracle如何跨服务器实时生成视图

Oracle如何跨服务器实时生成视图,第1张

Oracle创建跨用户视图,也就是跨模式视图。

1、首先在A中运行,把读取的权限赋值给B,这样在B中建立视图就可

grant select on A.userA to B以读取A中userA表中的数据了。

2、登录用户B表空间,建立视图 语句如下:

create or

replace view cas_user_view as select

B.LOGIN_NAME,B.PASSWORD,B.LOGIN_FLAG from userB B union select

A.LOGIN_NAME,A.PASSWORD,A.LOGIN_FLAG

from A.userA

A

到此,在用户B中已建立名为

cas_user_view的视图,可以供A和B同时使用。

有多种方法啊。介绍其中一种,使用mysql数据库的ODBC驱动。步骤:

1.安装mysql数据库的ODBC驱动,mysql-connector-odbc-3.51.23-win32.msi(其中*是版本号),下载并安装。

2.在Mysql中创建数据库实例。

3.打开控制面板 -- 管理工具 -- 数据源ODBC,在用户DSN中添加一个MySQL ODBC 3.51数据源。

4.在登录login选项卡中输入数据源名称Data Source Name,此处输入MysqlDNS(也可以自己随便命名,只要在后面导入数据的时候选择正确的数据源名字就行);然后输入服务器Server,用户User,密码Password,输入正确后选择要导入的数据库,Database选择你需要导入的数据库。在连接选项connect options中根据需要设置MySql使用的端口port和字符集Character Set。

注:字符集一定要和Mysql服务器相对应,如果Mysql使用了gbk字符集,则一定要设置字符集为gbk,否则导入到Sql Server可能会出现问号乱码。

5.打开sql server企业管理器,选择该数据库,单击右键选择所有任务 -- 导出数据。

6.‘选择数据源’为默认,‘选择目的’为刚刚安装的mySQL数据源,用户/系统DSN为MysqlDNS。在‘指定表复制或查询’中选择‘从源数据库复制表和视图’,在‘选择源表和视图’里,选择需要导入的表,即可将数据从MSSQLServer数据库导入到MySql数据库中。

MySql创建视图

(1).第一类:create view v as select * from table

(2).第二类:create view v as select id,name,age from table

(3).第三类:create view v[vid,vname,vage] as select id,name,age from table

如果涉及到数据量过大,业务逻辑需要跨表查询等等也可建立一个跨表的视图,有三种情况:

一、基于同一数据库

这种情况较为简单,只需简单的一行sql命令,如下:

create view v as (select * from table1) union all (select * from table2)

二、基于不同数据库

这种情况只比上面的sql语句多一个数据库的名字,如下:

create view 数据库1.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2)

create view 数据库2.v as (select * from 数据库1.table1) union all (select * from 数据库2.table2)

如果执行第一个sql将在数据库1下建立视图,反之亦然;

三、基于不同服务器

这种情况稍微麻烦一点,需要先建立一个远程表来访问远程服务器的数据表,然后再对这个刚建立的远程表和本地表进行视图,步骤如下:

1、查看MySql是否支持federated引擎

(1).登录Mysql

(2).mysql>show engines

(3).如果显示为no,在配置文件中添加:federated (在my.ini),重新启动mysql服务。

2、创建远程表

mysql>CREATE TABLE federated_table (

id INT(20) NOT NULL AUTO_INCREMENT,

name VARCHAR(32) NOT NULL DEFAULT '',

other INT(20) NOT NULL DEFAULT '0',

PRIMARY KEY (id)

)

ENGINE=FEDERATEDDEFAULT

CHARSET=utf8

CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table'

CONNECTION可以按如下方式进行配置:

(1).CONNECTION='mysql://username:password@hostname:port/database/tablename'

(2).CONNECTION='mysql://username@hostname/database/tablename'

(3).CONNECTION='mysql://username:password@hostname/database/tablename'

3、建立视图

create view 本地数据库.v as (select * from 本地数据库.table1) union all (select * from 远程数据库.test_table)


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/238787.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存