跨数据库的视图如何创建呢

跨数据库的视图如何创建呢,第1张

有多种方法啊。介绍其中一种,使用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数据库中。

案例描述:

在dbname数据库中创建dbname1数据库视图。

步骤(红字标识的是可替换的内容):

1.连接数据库

connect to dbname user username using password

2. 创建WRAPPER 的 DDL 语句

CREATE WRAPPER "DRDA"

LIBRARY 'db2drda.dll'

OPTIONS (DB2_FENCED 'N')

3. 创建SERVER 的 DDL 语句

CREATE SERVER tempserver

TYPE DB2/UDB

VERSION 8.1

WRAPPER DRDA

AUTHORIZATION "username1"

PASSWORD "password1"

OPTIONS

(DBNAME 'dbname1')

上面指定的dbname1是远程数据库的名称,username1和password1是它的用户名及密码。

4. 创建USER MAPPING 的 DDL 语句

CREATE USER MAPPING FOR db2admin

SERVER tempserver --此处tempserver名称就是步骤3创建的server

OPTIONS

(REMOTE_AUTHID 'dbname1',

REMOTE_PASSWORD 'password'

)

5. 创建跨库视图

CREATE NICKNAME PERSON FOR tempserver.PERSON

create view SYS_PERSON as

select *

from PERSON

需要注意,上面语句中NICKNAME和VIEW的名称不能相同。

说白了,就是无法补获数据库抛出的异常,数据库不支持,但是你的后台代码可以支持抛出异常,并且想办法处理。

可以这样,在你后台代码中,将你的union all的试图查询,改成多个sql的单试图查询,这样对每个sql查询做异常抛出处理,发现有异常,可能是网络原因断了,也可能是超时了,反正后台代码捕获到异常就不管这个试图了,继续下一个。麻烦是麻烦点,但是肯定可以实现,另外,因为是多个远程库的试图,读取速度也是一个大问题吧,改成多次查询,也可以用异步方式每个试图单独读取,前台异步显示,还能提升用户体验。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存