當前位置:首頁 » 編程語言 » sql里xml存儲方式
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql里xml存儲方式

發布時間: 2023-07-25 07:11:10

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

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

2. sql怎麼把xml轉換

1.怎麼用SQL語言把XML文件編輯成表格
select * from 表名 for xml

以下是詳細介紹:

FOR 子句

FOR 子句用於指定 BROWSE 或 XML 選項(BROWSE 和 XML 是不相關的選項)。

語法

[ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }

[ , XMLDATA ]

[ , ELEMENTS ]

[ , BINARY BASE64 ]

}

]

參數

BROWSE

指定當查看 DB-Library 瀏覽模式游標中的數據時允許更新。如果表包含時間戳列(用 timestamp 數據類型定義的列),表有唯一索引且 FOR BROWSE 選項在 SELECT 語句的最後發送到 SQL Server,則可以在應用程序中瀏覽該表。

說明 在含有 FOR BROWSE 選項的 SELECT 語句中無法使用 <lock_hint> HOLDLOCK。

FOR BROWSE 選項不能出現在用 UNION 運算符聯接的 SELECT 語句中。
2.如何把資料庫的表弄成xml格式
方法:

點擊Excel左上角按鈕,在彈出的選項中,點擊「另存為」

或者直接在Excel中按下快捷鍵F12

2、選擇最後一項:其他格式。

3、接下來,重命名一下文件名,並選擇文件類型為:

XML數據(*.xml)

4、點擊「保存」按鈕,會出現如下錯誤警告:

因為工作簿不包含任何XML映射,所以無法保存任何XML數據。

單擊「幫助」以獲取詳細信息。

5、這個原因是我們的工作簿只是普通的Excel數據,的確沒有做過XML映射,或者Excel數據也不是從XML文件導入的。

這時,我們嘗試另存為另一種文件類型:

XML電子表格2003(*.xml)

6、點擊保存按鈕。

7、這時會彈出一個兼容性對話框,問你是否保持工作簿的這種格式。

8、點擊「是」,即可將Excel保存為XML格式的文檔了。

我們使用軟體打開這個XML文檔(例如通過Chrome瀏覽器),發現格式正常,Excel數據也全在裡面。
3.怎麼能用SQL語句把查詢結果轉換給定格式的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;
4.sql中xml怎麼使用
using System;

using System.Xml;

public class Test

{

public static void Main(string[] args)

{

string xml = @"<a>b</a>";

XmlDocument doc = new XmlDocument();

doc.LoadXml(xml);

XmlNode node = doc.SelectSingleNode("a");

XmlNode sqlNode = doc.CreateElement("sql");

sqlNode.InnerText = "Select * From T_User Where Name = '樓主'";

node.AppendChild(sqlNode);

doc.Save(Console.Out);

}

}
5.怎麼把資料庫信息轉換成XML文件
如果是Sql2005以上版本就簡單了。

SELECT TOP 10 * FROM dbo.UserInfo

FOR XML PATH('UserInfo'),ROOT ('UserList')

就會生成以下XML

PATH裡面的字元串生成行標簽

ROOT生成根標簽

administrator21小張

administrator21小張

administrator21小張
6.怎樣從資料庫導出數據轉換XML
1。

建立jdbc-odbc連接 2。在定義變數中,寫入XML文件路徑(在eclipse的編寫) 3。

建立資料庫(以下DB為Users ),建表(以下表為users) 4。代碼如下import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;public class append { public static void main(String[] args) {try{ DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); DocumentBuilder builder=factory.newDocumentBuilder(); Document doc=builder.parse(args[0]);記得定義你的XML路徑 doc.normalize(); Element root = doc.getDocumentElement(); accessDB(doc,root); if(doc != null) printNode(root); TransformerFactory tf=TransformerFactory.newInstance(); Transformer transformer=tf.newTransformer(); DOMSource source=new DOMSource(doc); StreamResult result= new StreamResult(new File(args[0])); transformer.transform(source,result);}catch(Exception e){ e.printStackTrace();} }public static void createXML(Document doc,Element root,ResultSet rs){ try{ boolean flag=rs.next(); while(flag){ Element Users=doc.createElement("Users"); Element userid=doc.createElement("userid"); Text userid_text=doc.createTextNode(""+rs.getInt("userid")); userid.appendChild(userid_text); Element username =doc.createElement("username"); Text username_text=doc.createTextNode(rs.getString("username")); username.appendChild(username_text); Element password =doc.createElement("password"); Text password_text=doc.createTextNode(rs.getString("password")); password.appendChild(password_text); Users.appendChild(userid); Users.appendChild(username); Users.appendChild(password); root.appendChild(Users); flag=rs.next(); } } catch(SQLException e){ e.printStackTrace(); }}public static void accessDB(Document doc , Element root){ try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection conn= DriverManager.getConnection("jdbc:odbc:yourBDconName"/*URL*/ ); Statement stmt=conn.createStatement(); ResultSet rs=stmt.executeQuery("select * from users"); createXML(doc,root,rs); rs.close(); stmt.close(); conn.close(); }catch(Exception e){ e.printStackTrace(); }} public static void printNode(Element element){ NodeList children=element.getChildNodes(); NamedNodeMap attr=element.getAttributes(); int r=children.getLength(); if(attr!=null){ System.out.print("<"+element.getNodeName()); for(int j=0;j"+"\n"); } else if(attr==null){ System.out.print("<"+element.getNodeName()+">"); } if(element.hasChildNodes()){ for(int k=0;k "+"\n"); }}。

3. xml文檔轉換存儲到sql sever資料庫中

分無所謂,如果是你要的看著給吧。不知道你了解多少,我就盡量詳細點,羅嗦點。
表的設計完全是根據XML節點設計的,每一個節點信息都是表的一個欄位,每一個節點的屬性也要是一個表的欄位。
如果是用java寫首先需要導入幾個包
import java.sql.*; //估計一般的項目都是外包連接資料庫,所以用外包資料庫來講。
import java.io.*;
import javax.xml.parsers.*; //這個包是用來解析XML的
import org.w3c.dom.*; //工廠包
import org.apache.crimson.tree.*;//這個包是建立XML的包,也可以選擇不用,一般IDE不自帶,需要自己導入

//類也簡單寫一下吧
public class XmlToSql{
public static void main(string[] args){

//根據XML節點設計出的表欄位,我先假設有3個欄位
String id,username,password;
//建立資料庫連接,簡單方法連一下吧

Class.forName("com.microsoft.jabc.sqlserver.SQLServerDriver");
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databasename="資料庫名","登陸名","密碼");
//建立了連接後要用工廠去獲得Document,也就是你的XML
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//建立一個新工廠
DocumentBuilder builder=factory.newDocumentBuilder();//工廠建立一個builder來管理Doc
Document doc=builder.parse(new FileInputStrem(new File("*****.xml"));//把你的XML進行解析放入Document類型文檔。這時候你的XML文檔節點就以樹的形式放入內存了(說白了就是你表的欄位),下面你要什麼就調用就行了。

//開始正式解析文檔
NodeList nodes=doc.getElementsByTagName("a");//從英文也看的出這是把名為a的節點的信息放入NodeList容器中。NodeList就是存放節點組的容器
for(int i=0;i<nodes.getLength(),i++){ //開始循環把你的節點信息插入你的SQL表中,我只需要把你要的欄位提取出來就行了。我們不是前面假定了一個屬性ID,兩個元素節點嗎?這里就來取出
Element node=(Element)nodes.item(i); //先做個元素對象,畢竟我們要的欄位都是元素節點
id=node.getAttributes().getNamedItem("id").getNodeValue(); //用這個方法取出XML中 屬性ID的內容放入ID欄位中,這個ID就是你SQL里的ID名了,最後插入就可以了。注意這里是提取屬性的方法
username=node.getElementsBtagName("username").item(0).getFirstChild().getNode.Value();//提取元素節點username的值放入欄位,.item(0)就是第一個這個欄位,如果就有一個可以不要。
password=node.getElementsBtagName("password").item(0).getFirstChild().getNode.Value();//都是元素節點,所以同樣的方法取出password的值

//好了我們要的3個表值都取到了,並放入了變數中。現在一個SQL語句插入表就行了,其實我很怕在JAVA中寫SQL,不能格式化, .NET就方便的多。都寫到這里了就寫完吧

sql="insert into a values("+id+"','"+username+"'+'"password+"')";
con.createStatement().executeUpdate(sql);

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

}
}

//好了,你的XL信息循環插入表中了,其實XML結構很關鍵,這里是但節點循環,有時候出現多子節點,或者非正規體那就要根據XML的結構來循環輸入了,不過大體方法和思路都是一樣的。由於直接就在這里寫的代碼,沒在IDE中寫,所以括弧匹配方面也許會出小問題,見諒

4. 在sql中,有沒有辦法讓「select * from xxx for xml raw」生成的xml文件,保存到磁碟中

FOR XML 子句的基本語法
在 FOR 子句中指定 XML 模式的基本語法為:

FOR XML mode [, XMLDATA] [, ELEMENTS][, BINARY BASE64]

參數
XML mode

指定 XML 模式。XML 模式決定所得到的 XML 的形式。
mode 可以是 RAW、AUTO 或 EXPLICIT。

XMLDATA

指定應返回 XML-Data 架構。文檔的架構被預先設計為內嵌式架構。

ELEMENTS

如果指定 ELEMENTS 選項,則列作為子元素返回。否則,列將映射到 XML 特性。只有在 AUTO 模式下才支持該選項。

BINARY BASE64

如果指定 BINARY Base64 選項,則查詢所返回的任何二進制數據都用 base64 編碼格式表示。使用 RAW 和 EXPLICIT 模式檢索二進制數據時,必須指定該選項。在 AUTO 模式中,默認情況下將二進制數據作為引用返回。

以上是SQL給出的幫助,你可以參照參數試驗一下.