XML和Oracle資料相互匯出

2021-05-22 11:33:12 字數 2733 閱讀 6393

1、建立目錄:

①以管理員使用者登入

conn

system/manager@orcl;

②建立目錄

create or replace directory xml2oracle_dir as 'd://xml2oracle';  

③授予讀取和寫入的許可權給使用者

grant read,write on directory xml2oracle_dir to jwtimp;

④用指定使用者身份登入

conn

jwtimp/jwtimp@orcl

;⑤測試程式,當然,這段程式是從網上高人部落格複製過去,忘了位址了,呵呵。

注:此段**已經測試通過,網上相同**由於沒有給出路徑引用的的問題,導致很多人走 了很多彎路...

create table people

(personid varchar2(10) primary key,

name varchar2(20),

address varchar2(60),

tel  varchar2(20),

fax  varchar2(20),

email varchar2(40));

--從xml檔案載入資料儲存到資料庫的過程

create or replace procedure xml2db(xmlfile varchar2) as

--create or replace procedure xml2db(content clob) as

p xmlparser.parser;

doc xmldom.domdocument;

n xmldom.domnode;

nl xmldom.domnodelist;

len number;

--根據person結點生成插入sql語句的過程

function insertsql(node xmldom.domnode) return varchar2

isn xmldom.domnode;

nl xmldom.domnodelist;

len number;

nnm xmldom.domnamednodemap;

isql varchar2(200);

begin

--取得person結點所有屬性

nnm := xmldom.getattributes(node);

isql := 'insert into people values(';

isql := isql || '''';

--取得所有屬性中的第乙個屬性,即"personid",並拼接到sql語句中

isql := isql || xmldom.getnodevalue(xmldom.item(nnm,0));

isql := isql || '''';

--取得person結點下的所有結點,準備遍歷

nl := xmldom.getchildnodes(node);

len := xmldom.getlength(nl);

for i in 0..len-1 loop

--取出第i個結點

n := xmldom.item(nl,i);

isql := isql || ',';

isql := isql || '''';

--將結點的文字值取出並拼接到sql語句中

isql := isql || xmldom.getnodevalue(xmldom.getfirstchild(n));

isql := isql || '''';

end loop;

isql := isql || ')';

return isql;

end insertsql;--end function

begin

p := xmlparser.newparser;

xmlparser.parse(p,xmlfile);

--xmlparser.parse(p,content);

--轉換xml檔案成dom對像

doc := xmlparser.getdocument(p);

xmlparser.freeparser(p);

--取出所有person元素

nl := xmldom.getelementsbytagname(doc,'person');

len := xmldom.getlength(nl);

--清空people表的內容

delete from people;

for i in 0..len-1 loop

--取出第i個person元素

n := xmldom.item(nl,i);

--執行插入該person元素所用的sql語句

execute immediate insertsql(n);

end loop;

commit;

xmldom.freedocument(doc);

end xml2db;/

--將資料庫中的資料匯出成xml檔案的過程

⑥呼叫儲存過程匯入和匯出資料

xml==>oracle   exec xml2db('xml2oracle_dir'||'/'||'xml2oracle.xml');

oracle==>xml   exec db2xml('xml2oracle_dir'||'/'||'oracle2xml.xml');

sqlplus 導oracle資料資料亂碼問題

使用的sqlplus匯出資料,前段時間還好好的,現在突然亂碼,資料庫中不亂碼 解決方法 1.export引數 export nls lang simplified chinese china.zhs16gbk 2.修改配置單數 修改 etc bashrc 中的引數,新增相關資訊 nls lang s...

oracle建立使用者和oracle匯入匯出命令

1.問題定義 我們在開發的時候使用的是區域網中的測試機上面的oracle資料庫,由於需要將測試機上面的資料庫備份到本地機器上面,便於不處於區域網環境中仍然可以繼續開發,維護等。2.步驟說明 1.啟動oracle服務 oracle例項名為 orahnhj 2.建立本地帳戶 username keywo...

Oracle用imp和exp實現資料的匯入和匯出

imp和exp命令詳解 exp匯出模式 full模式 匯出整個資料庫 user模式 匯出指定的使用者 table模式 匯出指定的表 tablespace模式 匯出表空間 exp匯出引數 owner指定要匯出的使用者列表 full y表示要匯出整個資料庫 tables指定要匯出的表 tablepace...