當前位置:首頁 » 數據倉庫 » oraclexml資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

oraclexml資料庫

發布時間: 2023-04-16 02:30:21

『壹』 oracle怎麼把資料庫中的欄位轉化成指定的xml格式

在oracle中提供了許多內置的程序包,它們用於擴展資料庫的功能。在開發應用程序時,可以利用這些程序包。資料庫用戶sys擁有oracle提供的所有程序包。他們被定義為共有同義詞,並將執行許可權授予了public用戶組,任何用戶都可以訪問它們。其中DBMS_XMLQUERY包用於將查詢結果喊激世轉換為XML格式,DBMS_LOB程序包包含雨處理大型對象的過程和函數。下面我們看一下DBMS_XMLQUERY和DBMS_LOB的用法:
sql> DECLARE
result CLOB;
xmlstr VARCHAR2(32767);
line VARCHAR2(2000);
line_no INTEGER :=1;
BEGIN
result :=DBMS_XMLQUERY.getXml('select empno,empname from employee');
xmlstr :=DBMS_LOB.SUBSTR(result,32767);
LOOP
EXIT WHEN xmlstr IS NULL;
line :=SUBSTR(xmlstr,1,INSTR(xmlstr,CHR(10)-1));
DBMS_OUTPUT.PUT_LINE(line_no || ':' || line);
xmlstr :=SUBSTR(xmlstr,INSTR(xmlstr,CHR(10)+1));
line_no :=line_no + 1;
END LOOP;
END;

在上面的例子中我們聲明了一個CLOB數據類型的result變數,以及VARCHAR2類型的xmlstr和line兩個變數。其中,getXml函數用於將查詢結果轉換為XML格式,SUBSTR函數檢索子字元串,鉛巧32767值指定要從CLOB數據類型讀取的最大位元組數。檢索到的字元串存儲xmlstr變數中。LOOP塊循環執行,每次從xmlstr中讀取一行。INSTR函數返回一個鄭肢字元串在另一個字元串首次出現的位置。在此,該函數返回換行符在字元串中的位置,直到遇到下一行。

大家覺得例子的結果能不能讀出我們預期的結果呢?試試就知道了!!!

結果如下:

< ?xml version='1.0'?>
< ROWSET>
< ROW num="1">
< EMPNO>E001</EMPNO>
< EMPNAME>Jane</EMPNAME>
< /ROW>
<ROW num="2">
< EMPNO>E002</EMPNO>
< EMPNAME>John</EMPNAME>
< /ROW>
< ROW num="3">
< EMPNO>E003</EMPNO>
< EMPNAME>Joe</EMPNAME>
< /ROW>
< /ROWSET>

『貳』 oracle資料庫中怎麼把xml文檔內的數據導入啊

學習Oracle架構應當掌握的知識 1、物理結構(由控制文件、數據文件、重做日誌文件、參數文件、歸檔文件、口令文件組成)一個資料庫中的數據存儲在磁碟上物理文件,被使用時,調入內存。其中控制文件、數據文件、重做日誌文件、跟蹤文件及警告日誌(trace files,alert files)屬於資料庫文件;參數文件(parameter file)口令文件(password file)是非指敗握資料庫文件唯慶1.1數據文件:存儲數據的文件.數據文件典型地代表了根據他們使用的磁碟空間和數量所決定的一個Oracle資料庫的容積。由於性能原因,每一種類型的數據放在相應的一個枯帆或一系列文件中,將這些文件放在不同的磁碟中。```` http://www.huohuli.com/shi/content.aspx?ID=5264

『叄』 oracle資料庫如何解析XML數據獲取值

實現思路:可虛簡以通過w3c的dom解析器進行操作,之後通過getName獲取到xmltpye中的屬性值。

舉例:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.NodeList;

public class DomTest1

{

public static void main(String[] args) throws Exception

{

// step 1: 獲得dom解析器工廠(工作敗正的作用是用於創建具體的解析器)

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

// System.out.println("class name: " + dbf.getClass().getName());

// step 2:獲得具體的dom解析器

DocumentBuilder db = dbf.newDocumentBuilder();

// System.out.println("class name: " + db.getClass().getName());

// step3: 解析一個xml文檔,獲得Document對象(根結點)

Document document = db.parse(new File("candidate.xml"));

NodeList list = document.getElementsByTagName("PERSON");

for(int i = 0; i < list.getLength(); i++)

{

Element element = (Element)list.item(i);

String content = element.getElementsByTagName("NAME"察譽悔).item(0).getFirstChild().getNodeValue();

System.out.println("name:" + content);

System.out.println("--------------------------------------");

}

}

}

『肆』 java讀取oracle資料庫裡面的數據生成xml文件,生成的xml文件出現亂碼怎麼解決

跟蹤問題所在:
1、查詢一下資料庫,判斷在資料庫中的時候,是否是已經存在了亂碼。
2、在讀取到Java的時候,你用SystemOut輸出一下,判斷這個時候,是否是亂碼。
3、寫入到xml文件的時候,XML中是否是亂碼。
如果是1種情況出現亂碼,則是寫入資料庫的時候出現亂碼,需要更改寫入程序的代碼。
如果是2種情況出現亂碼,則是讀取Oracle的字元集出現錯誤,設置讀取的字元集。
如果是3種情況出現亂碼,則是在Java類中寫入的時候,設置字元集,查看資料庫字元集,設置為UTF-8、或者是GBK字元集。
希望對你有幫助。

『伍』 XML數據文件怎麼導入到Oracle資料庫中

1.准備數據:在excel中構造出需要的數據
2.將excel中的數據另存為文本文件(有製表符分隔的)
3.將新保存到文本文件中的數據導入到pl*sql中
在pl*sql中選擇tools--text importer,在出現的窗口中選擇Data from Textfile,然後再選擇Open data file,
在彈出的文件選擇框中選中保存有數據的文本文件,此時將會看到data from textfile中顯示將要導入的數據!

『陸』 使用SSH框架的Hibernate,怎麼配置hbm.xml文件和連接oracle資料庫

spring鏈接配置即可。

『柒』 資料庫的類型

資料庫大致可以這么分類:
1關系資料庫
1.1大型商業資料庫:支持數據存儲量大,訪問效率高,適合大型企業應用,收費較高,具體包括:
oracle
db2(ibm)
sybase(這個是比較早的,公司現在不做資料庫了)
sql
server,版本包括2000,2005,2008,
2012等
1.2
中小型應用資料庫:
sql
server
2000
acess
visual
foxpro
1.3
中小型開源資料庫:
mysql(這個開源資料庫在一些大型應用中會以集群的方式使用)
postgresql
sqlite
1.4嵌入式資料庫:
sqlite也可以算在這里
1.5
列存儲模式資料庫:主要用於研究和數據倉庫應用
monetdb
2
面向對象資料庫
berkeley
db(現在已經被oracle買下了)
oracle也提供了面向對象的功能
3
xml資料庫,這類資料庫一般是附屬於關系資料庫功能的,只有研究型的是處理純xml文檔的
db2
,附加xml處理版本
oracle,裡麵包含xml查詢功能
sqlserver,包含xml數據查詢功能
4
nosql資料庫,目前大型互聯網公司和微博等網站廣泛使用的數據存儲系統,典型的有:
hbase
cassandar
mongodb
還有很多,這里不逐一列列舉了

『捌』 請問C#如何實現Oracle資料庫中指定表格數據以XML文件形式導出。

假設你的窗體上有一個按鈕,在設計器中雙擊按鈕,寫以下代碼:using
(OracleDataAdapter
=
new
OracleDataAdapter
("select
*
from
表","你的連接字元串")){DataTable
dt
=
new
DataTable("表名");adapter.Fill(dt);dt.WriteXml("C:\\xxx.xml");
//導出到C盤}不過Oracle不用SqlDataAdapter——1)右鍵你的程序「Add
References……」(灰色文件夾),然後添加System.Data.OracleClient。2)在程序中引入「using
System.Data.OracleClient」。3)編碼如下:

『玖』 如何使用sqlloader導入xml文件到Oracle資料庫

在Oracle表數據和xml文件間相互導入導出的PL/SQL過程
學校里要求做個題,題目要求是寫出將已知格式xml文件中的數據導入Oracle資料庫、把資料庫中的數據導出成xml文件的過程。
已知格式xml文件如下:

<?xmlversion="1.0"?>
<PEOPLE>
<PERSONPERSONID="E01">
<NAME>TonyBlair</NAME>
<ADDRESS>10DowningStreet,London,UK</ADDRESS>
<TEL>(061)98765</TEL><FAX>(061)98768</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSONPERSONID="E02">
<NAME>BillClinton</NAME>
<ADDRESS>WhiteHouse,USA</ADDRESS>
<TEL>(001)640098765</TEL><FAX>(001)640098769</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSONPERSONID="E03">
<NAME>TomCruise</NAME>
<ADDRESS>57JumboStreet,NewYork,USA</ADDRESS>
<TEL>(001)450067859</TEL><FAX>(001)450067895</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
<PERSONPERSONID="E04">
<NAME>LindaGoodman</NAME>
<ADDRESS>78CraxLane,London,UK</ADDRESS>
<TEL>(061)5456789</TEL><FAX>(061)5456772</FAX>
<EMAIL>[email protected]</EMAIL>
</PERSON>
</PEOPLE>

於是寫出過程如下:
--建表
CREATETABLEPEOPLE
(
PERSONIDVARCHAR2(10)PRIMARYKEY,
NAMEVARCHAR2(20),
ADDRESSVARCHAR2(60),
TELVARCHAR2(20),
FAXVARCHAR2(20),
EMAILVARCHAR2(40)
);
--從xml文件載入數據保存到資料庫的過程
createorreplaceprocerexml2db(xmlfilevarchar2)as
pxmlparser.Parser;
docxmldom.DOMDocument;
nxmldom.DOMNode;
nlxmldom.DOMNodeList;
lennumber;
--根據PERSON結點生成插入SQL語句的過程
functioninsertsql(nodexmldom.DOMNode)returnvarchar2
is
nxmldom.DOMNode;
nlxmldom.DOMNodeList;
lennumber;
nnmxmldom.DOMNamedNodeMap;
isqlvarchar2(200);
begin
--取得PERSON結點所有屬性
nnm:=xmldom.getAttributes(node);
isql:='insertintopeoplevalues(';
isql:=isql||'''';
--取得所有屬性中的第一個屬性,即"PERSONID",並拼接到SQL語句中
isql:=isql||xmldom.getNodeValue(xmldom.item(nnm,0));
isql:=isql||'''';
--取得PERSON結點下的所有結點,准備遍歷
nl:=xmldom.getChildNodes(node);
len:=xmldom.getLength(nl);
foriin0..len-1loop
--取出第i個結點
n:=xmldom.item(nl,i);
isql:=isql||',';
isql:=isql||'''';
--將結點的文本值取出並拼接到SQL語句中
isql:=isql||xmldom.getNodeValue(xmldom.getFirstChild(n));
isql:=isql||'''';
endloop;
isql:=isql||')';
returnisql;
endinsertsql;
begin
p:=xmlparser.newParser;
xmlparser.parse(p,xmlfile);
--轉換xml文件成DOM對像
doc:=xmlparser.getDocument(p);
xmlparser.freeParser(p);
--取出所有PERSON元素
nl:=xmldom.getElementsByTagName(doc,'PERSON');
len:=xmldom.getLength(nl);
--清空people表的內容
deletefrompeople;
foriin0..len-1loop
--取出第i個PERSON元素
n:=xmldom.item(nl,i);
--執行插入該PERSON元素所用的SQL語句
executeimmediateinsertsql(n);
endloop;
commit;
xmldom.freeDocument(doc);
endxml2db;
/
--將資料庫中的數據導出成xml文件的過程
createorreplaceproceredb2xml(xmlfilevarchar2)as
docxmldom.DOMDocument;
retxmldom.DOMNode;
peoplenodexmldom.DOMNode;
--遍歷整個people表的游標
-------------
--將people表中一行記錄轉換為元素
--並插入到DOM文檔對像根結點PEOPLE下的過程
procereaddperson(docxmldom.DOMDocument,peoplexmldom.DOMNode,
v_pidvarchar2,v_namevarchar2,v_addrvarchar2,
v_telvarchar2,v_faxvarchar2,v_emailvarchar2)
is
personelemxmldom.DOMElement;
personnodexmldom.DOMNode;
itemelemxmldom.DOMElement;
itemnodexmldom.DOMNode;
textxmldom.DOMText;
begin
--創建PERSON結點
personelem:=xmldom.createElement(doc,'PERSON');
--設置PERSONID屬性
xmldom.setAttribute(personelem,'PERSONID',v_pid);
personnode:=xmldom.appendChild(peoplenode,xmldom.makeNode(personelem));
--向PERSON結點中添加NAME元素
itemelem:=xmldom.createElement(doc,'NAME');
--將NAME結點添加到PERSON結點中
itemnode:=xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
--創建文本結點
text:=xmldom.createTextNode(doc,v_name);
--將文本結點添加到NAME結點下,以構成完整NAME元素
itemnode:=xmldom.appendChild(itemnode,xmldom.makeNode(text));
--向PERSON結點中添加ADDRESS元素
itemelem:=xmldom.createElement(doc,'ADDRESS');
itemnode:=xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text:=xmldom.createTextNode(doc,v_addr);
itemnode:=xmldom.appendChild(itemnode,xmldom.makeNode(text));
--向PERSON結點中添加TEL元素
itemelem:=xmldom.createElement(doc,'TEL');
itemnode:=xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text:=xmldom.createTextNode(doc,v_tel);
itemnode:=xmldom.appendChild(itemnode,xmldom.makeNode(text));
--向PERSON結點中添加FAX元素
itemelem:=xmldom.createElement(doc,'FAX');
itemnode:=xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text:=xmldom.createTextNode(doc,v_fax);
itemnode:=xmldom.appendChild(itemnode,xmldom.makeNode(text));
--向PERSON結點中添加EMAIL元素
itemelem:=xmldom.createElement(doc,'EMAIL');
itemnode:=xmldom.appendChild(personnode,xmldom.makeNode(itemelem));
text:=xmldom.createTextNode(doc,v_email);
itemnode:=xmldom.appendChild(itemnode,xmldom.makeNode(text));
endaddperson;
begin
--創建一個新DOM文檔對像
doc:=xmldom.newDOMDocument;
--為文檔添加根結點PEOPLE
peoplenode:=xmldom.makeNode(xmldom.createElement(doc,'PEOPLE'));
ret:=xmldom.appendChild(xmldom.makeNode(doc),peoplenode);
--使用游標遍歷people中的每行,生成每一行對應的PERSON元素並添加到PEOPLE根結點中
forv_rowincur_peopleloop
addperson(doc,peoplenode,v_row.personid,v_row.name,
v_row.address,v_row.tel,v_row.fax,v_row.email);
endloop;
--將結果寫入指定文件
xmldom.writeToFile(doc,xmlfile);
xmldom.freeDocument(doc);
enddb2xml;

『拾』 從oracle資料庫查詢數據生成xml,java解析xml文件的數據批量插入到oracle資料庫(用SAX解析)

我自己前段時間寫的有事就問
資料庫建了一個表study
id student class teacher age 這5個欄位
package com.sql.xml;

import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
//導出數據存入XML
public class ReadDb {
public static void main(String args[]){
//連接資料庫
try{
//資料庫連接
String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18";
String classforname="oracle.jdbc.driver.OracleDriver";
String usename="yong";
String password="password";
Class.forName(classforname);
Connection con=DriverManager.getConnection(url,usename,password);
Statement sta=con.createStatement();
//查詢數帆扒據
ResultSet result=sta.executeQuery(
"SELECT * FROM study");
//創建根節點
Document document=DocumentHelper.createDocument();
Element studyInfo=DocumentHelper.createElement("studyInfo");
document.setRootElement(studyInfo);
//缺虛Element studyInfo=document.addElement("studyInfo");
//當態扮昌有值時查詢
while(result.next()){
//增加每個節點
Element study=studyInfo.addElement("study");
Element id=study.addElement("id");
Element student=study.addElement("student");
Element classe=study.addElement("class");
Element teacher=study.addElement("teacher");
Element age=study.addElement("age");
//將資料庫值通過SETTEXT為XML值
id.setText(result.getString("id"));
student.setText(result.getString("student"));
//System.out.println(id.getText());
classe.setText(result.getString("class"));
teacher.setText(result.getString("teacher"));
age.setText(result.getString("age"));
}
//將樹導出到文件中:兩種輸出方法
XMLWriter write=new XMLWriter(new FileOutputStream(new File("studyInfo.xml")));
write.write(document);
write.close();

}catch(Exception e){
e.printStackTrace();
}
}

}

插入資料庫,改了幾個條件
bookstore.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book has="100">
<bname>資料庫</bname>
<price>33.80元</price>
<date>2009-10-1</date>
</book>
<book has="95">
<bname>三國演義</bname>
<price>40.00元</price>
<date>2005-1-7</date>
</book>
<book has="86">
<bname>西遊記</bname>
<price>30.00元</price>
<date>2004-3-8</date>
</book>
<cd have="15">
<id>1</id>
<cname>beyound</cname>
<owner>小黎</owner>
</cd>
<cd have="17">
<id>2</id>
<cname>kugou</cname>
<owner>小強</owner>
</cd>
</bookstore>

解析如下
package com.sql.xml;
import java.io.File;
import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.OutputFormat;

//XML的解析與轉換後存入資料庫
public class Fenkai {
public static void main(String args[]){
String sql,BNAME=null,PRICE=null,DAT=null;//定義資料庫表段
String sqlatt,CNAME=null,ID=null,OWNER=null;
//讀取xml文件
SAXReader reader=new SAXReader();
File file=new File("bookstore.xml");
try{
//資料庫連接
String url="jdbc:oracle:thin:@10.0.3.18:1521:hxtest18";
String classforname="oracle.jdbc.driver.OracleDriver";
String usename="yong";
String password="password";
Class.forName(classforname);
Connection con=DriverManager.getConnection(url,usename,password);
//解析xml文件
Document document=reader.read(file);
Element root=document.getRootElement();//根節點
System.out.println("輸出根節點:"+root.getName());
//下面用迭代得到子節點和孫節點
for(Iterator child=root.elementIterator();child.hasNext();){
Element childEle=(Element)child.next();
System.out.println("子:"+childEle.getName());
System.out.println("孫:");
for(Iterator grand=childEle.elementIterator();grand.hasNext();){
Element grandEle=(Element)grand.next();
System.out.println(grandEle.getName()+"值:"+grandEle.getText());
//轉換數據
while(grandEle.getText().equals("資料庫")){
grandEle.setText("001");
}
while(grandEle.getText().equals("三國演義")){
grandEle.setText("002");
}
while(grandEle.getText().equals("西遊記")){
grandEle.setText("003");
}
while(grandEle.getText().equals("beyound")){
grandEle.setText("004");
}
while(grandEle.getText().equals("kugou")){
grandEle.setText("005");
}

}}
//得到各節點值插入資料庫

for(Iterator it= root.elementIterator("book");it.hasNext();){
Element ch=(Element)it.next();
BNAME=ch.elementText("bname");
PRICE=ch.elementText("price");
DAT=ch.elementText("date");

// while(childEle.getName().equals("cd")){}

sql="insert into book values('"+BNAME+"','" +PRICE
+"','"+DAT+"')";
//sql="select * from book";//加入本語句運行不改變數據表
//執行
con.createStatement().executeUpdate(sql);}
for(Iterator itt= root.elementIterator("cd");itt.hasNext();){
Element cht=(Element)itt.next();
CNAME=cht.elementText("cname");
ID=cht.elementText("id");
OWNER=cht.elementText("owner");
sqlatt="insert into cd values('"+CNAME+"','" +ID
+"','"+OWNER+"')";
//sqlatt="select * from cd";
con.createStatement().executeUpdate(sqlatt);}

//將轉換後文件存入txt
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("gbk");
XMLWriter writer = new XMLWriter( new FileWriter(new File("bookchange.txt")),format);
writer.write(document);
writer.close();
System.out.println(document.asXML());//列印改變後的樹
}catch(Exception e){
e.printStackTrace();
System.out.println("有錯啊!");
}
}

}