當前位置:首頁 » 編程語言 » sqlxml解析

sqlxml解析

發布時間: 2023-03-07 01:17:16

java中如何通過xml配置文件來操作sql語句

xml本來就是為定義數據服務的,在解析xml的時候,可以按照預定義的規則進行解析。具體的格式可以由自己來定義,但是這種格式涵蓋的內容必須包含構建這個表(實現某一數據結構)的必須條件。 這樣定義好xml之後,在解析的時候可以根據給定規則,解析出具體的某個表(某一數據結構)。 對於你的這段xml也就是這樣的。具體的解析方法,可以看dom解析 sax解析 ==

⑵ XML數據有什麼特點SQL語言中是如何處理XML數據的,舉幾個例子

1)XML可以用於本地計算的數據。傳遞到桌面的數據可以進行本地計算。XML解析器可以讀取數據,並將它遞交給本地應用程序(例如瀏覽器)進一步查看或處理。數據也可以由使用XML對象模型的腳本或其它編程語言來處理。
2)可以為用戶提供正確的結構化數據視圖。傳遞到桌面的數據可以以多種方式表示。本地數據集,可以根據用戶喜好和配置等因素,以適當的形式在視圖中動態表現給用戶。
3)允許集成不同來源的結構化數據。使用代理可在中間層伺服器上集成來自後端資料庫和其它應用程序的數據,使該數據能夠傳遞給桌面或者其它伺服器,做進一步處理。
4)描述來自多種應用程序的數據。由於 XML 是可擴展的,因此它可以用於描述來自多種應用程序的數據,即使沒有數據的內置描述,也能夠接收和處理數據。
5)通過粒度更新來提高性能。XML 允許粒度更新。開發人員不必在每次改動時都發送整個結構化數據集。有了粒度更新後,只有改變的元素才從伺服器發送到客戶機。

⑶ 從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("有錯啊!");
}
}

}

⑷ xml文件如何寫入sql資料庫

sqlserver2005分解並導入xml文件[@more@]
1.
一次性導入:
declare
@idoc
int;
declare
@doc
xml;
select
@doc=bulkcolumn
from
openrowset(bulk
n'e:mstarinstrycodes.xml',
single_blob)
as
x
exec
sp_xml_preparedocument
@idoc
output,
@doc
select
*
into
tmp_tab
from
openxml
(@idoc,
'/root/record'/',2)
with
(
instrycode
varchar(10)
,instryglobalid
varchar(10)
,instryname
varchar(100)
,sectorcode
varchar(10)
,sectorglobalid
varchar(10)
,sectorname
varchar(100)
,supersectorcode
varchar(10)
,supersectorname
varchar(100)
,groupcode
varchar(10)
,groupname
varchar(100)
,countryid
varchar(3)
)
exec
sp_xml_removedocument
@idoc
select
*
from
tmp_tab
2.
先導入到表中varchar(max)列,然後再用openxml解析,讀出。
--
使用single_clob參數,tmp_raw中欄位為varcahr(max)類型
select
*
into
tmp_raw
from
openrowset(bulk
n'e:mstarinstrycodes.xml',
single_clob)
as
x
declare
@idoc
int;
declare
@doc
xml;
select
@doc
=
bulkcolumn
from
tmp_raw
exec
sp_xml_preparedocument
@idoc
output,
@doc
select
top
10
*
from
openxml
(@idoc,
'/root/record',
1)
with
(
instrycode
varchar(10)
,instryglobalid
varchar(10)
,instryname
varchar(100)
,sectorcode
varchar(10)
,sectorglobalid
varchar(10)
,sectorname
varchar(100)
,supersectorcode
varchar(10)
,supersectorname
varchar(100)
,groupcode
varchar(10)
,groupname
varchar(100)
,countryid
varchar(3)
)
exec
sp_xml_removedocument
@idoc

⑸ SQL如何動態的解析XML

(freeware)http://www.CodeHighlighter.com/-->DECLARE@ItemMessageXML
DECLARE@ItemTableTABLE(ItemNumberINTPRIMARYKEY,ItemDescriptionNVARCHAR(300))
SET@ItemMessage=N'<ItemList>
<Item>
<ItemNumber>1</ItemNumber>
<ItemDescription>XBox360,超值</ItemDescription>
</Item>
<Item>
<ItemNumber>2</ItemNumber>
<ItemDescription>WindowsPhone7,快來嘗鮮吧</ItemDescription>
</Item>
</ItemList>'
INSERTINTO@ItemTable
(
ItemNumber,
ItemDescription
)
SELECTT.c.value('(ItemNumber/text())[1]','INT'),
T.c.value('(ItemDescription/text())[1]','NVARCHAR(300)')
[email protected]('/ItemList/Item')AST(c)
SELECTItemNumber,
ItemDescription
FROM@ItemTable
(freeware)http://www.CodeHighlighter.com/-->DECLARE@ItemMessageXML
DECLARE@ItemTableTABLE(ItemNumberINTPRIMARYKEY,ItemDescriptionNVARCHAR(300))
SET@ItemMessage=N'<ItemListxmlns="http://cd.love.com/SOA">
<Item>
<ItemNumber>1</ItemNumber>
<ItemDescription>XBox360,超值</ItemDescription>
</Item>
<Item>
<ItemNumber>2</ItemNumber>
<ItemDescription>WindowsPhone7,快來嘗鮮吧</ItemDescription>
</Item>
</ItemList>'
;WITHXMLNAMESPACES(DEFAULT'http://cd.love.com/SOA')
INSERTINTO@ItemTable
(
ItemNumber,
ItemDescription
)
SELECTT.c.value('(ItemNumber/text())[1]','INT'),
T.c.value('(ItemDescription/text())[1]','NVARCHAR(300)')
[email protected]('/ItemList/Item')AST(c)
SELECTItemNumber,
ItemDescription
FROM@ItemTable

⑹ 資料庫 SQL 有XML欄位,怎樣用nodes,values,查詢

SELECT T.c.value('DocEntry[1]','int'),
T.c.value('LineNum[1]','int'),
T.c.value('ItemCode[1]','varchar(50)')
FROM @x.nodes('NewDataSet/RDR1') AS T(c)

是不是你要的結果

熱點內容
es買哪個配置的最多 發布:2024-05-21 23:57:23 瀏覽:694
阿里雲伺服器國外 發布:2024-05-21 23:46:39 瀏覽:77
雙資料庫 發布:2024-05-21 23:42:23 瀏覽:151
linuxip設置命令 發布:2024-05-21 22:52:56 瀏覽:851
aspnetfile上傳 發布:2024-05-21 22:28:58 瀏覽:671
華為nm存儲卡卡刷 發布:2024-05-21 22:25:23 瀏覽:601
sql注入過程 發布:2024-05-21 22:20:07 瀏覽:949
c並行編程 發布:2024-05-21 22:10:00 瀏覽:150
愛比較伺服器怎麼開 發布:2024-05-21 22:00:42 瀏覽:668
java代碼格式 發布:2024-05-21 21:56:09 瀏覽:36