您好,登錄后才能下訂單哦!
項目上需要將老系統(tǒng)中的數(shù)據(jù)導(dǎo)入到新系統(tǒng)中,決定用數(shù)據(jù)鏈dblink將老數(shù)據(jù)導(dǎo)入到目標(biāo)數(shù)據(jù)庫中,將操作過程記錄如下:
1.創(chuàng)建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.用鏈表查詢
執(zhí)行SQL select * from ygbgtest_portaltest_link@portal_information;
報錯“ORA-02019:未找到遠(yuǎn)程數(shù)據(jù)庫的連接說明”。檢查發(fā)現(xiàn)表名和數(shù)據(jù)鏈名寫反了,⊙﹏⊙,調(diào)整后執(zhí)行 select * from portal_information@ygbgtest_portaltest_link;
報錯“ORA-22992:無法使用從遠(yuǎn)程表選擇的LOB定位符”。檢查發(fā)現(xiàn)報錯原因是查詢的源數(shù)據(jù)表中含有CLOB類型字段。
3.解決dblink查詢源數(shù)據(jù)表中含有大字段的問題
我解決該問題的方法是通過創(chuàng)建臨時表,并將源數(shù)據(jù)表中的數(shù)據(jù)導(dǎo)入到臨時表中。然后查詢臨時表以獲取CLOB字段數(shù)據(jù)。
--創(chuàng)建臨時表以獲取遠(yuǎn)程表數(shù)據(jù)
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;
--從臨時表中將數(shù)據(jù)插入到目的表中
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;
--查看大字段中的數(shù)據(jù)
select dbms_lob.substr(t.summary,4000,1) ty,t.* from portal_information t where t.id=3338;
自此,通過Dblink查詢和獲取源數(shù)據(jù)庫中的表數(shù)據(jù)并插入到目標(biāo)數(shù)據(jù)庫中的操作均能正常執(zhí)行了。當(dāng)然網(wǎng)上還有其它辦法可以查看大字段,例如使用視圖等。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。