项目上需要将老系统中的数据导入到新系统中,决定用数据链dblink将老数据导入到目标数据库中,将操作过程记录如下:
我们提供的服务有:做网站、成都网站制作、微信公众号开发、网站优化、网站认证、向阳ssl等。为数千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的向阳网站制作公司1.创建Dblink
create database link ygbgtest_portaltest_link
connect to dbuser identified by password
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xx.xx)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)';
2.用链表查询
执行SQL select * from ygbgtest_portaltest_link@portal_information;
报错“ORA-02019:未找到远程数据库的连接说明”。检查发现表名和数据链名写反了,⊙﹏⊙,调整后执行 select * from portal_information@ygbgtest_portaltest_link;
报错“ORA-22992:无法使用从远程表选择的LOB定位符”。检查发现报错原因是查询的源数据表中含有CLOB类型字段。
3.解决dblink查询源数据表中含有大字段的问题
我解决该问题的方法是通过创建临时表,并将源数据表中的数据导入到临时表中。然后查询临时表以获取CLOB字段数据。
--创建临时表以获取远程表数据
create global temporary table temp_ygbg_information on commit preserve rows
as select * from portal_information@ygbgtest_portaltest_link;
select count(1) from temp_ygbg_information t;
--从临时表中将数据插入到目的表中
insert into portal_information
(id,
title,
picture_url,
status,
author_id,
author_name,
create_time,
modify_date,
delete_date,
view_num,
order_flag,
summary,
type,
promulgation_charge,
information_source,
sort_num,
sub_title,
is_slidenews)
select
SEQ_PORTAL_INFORMATION.NEXTVAL,
title,
picture_url,
status,
author_id,
author_name,
create_time,
modify_date,
delete_date,
view_num,
order_flag,
summary,
type,
promulgation_charge,
information_source,
sort_num,
sub_title,
is_slidenews from temp_ygbg_information t1 where t1.id=3338;
--查看大字段中的数据
select dbms_lob.substr(t.summary,4000,1) ty,t.* from portal_information t where t.id=3338;
自此,通过Dblink查询和获取源数据库中的表数据并插入到目标数据库中的操作均能正常执行了。当然网上还有其它办法可以查看大字段,例如使用视图等。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:Oracle数据链创建及使用-创新互联
文章URL:http://lswzjz.com/article/discgh.html