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...