當前位置:首頁 » 編程語言 » xml導入sql

xml導入sql

發布時間: 2024-05-17 21:34:13

A. 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中寫,所以括弧匹配方面也許會出小問題,見諒

B. 將XML文件導入SQL

首先將XML拆解出來:

declare @變數名A XML

set @變數名A='XML內容COPY進來,如果有中文的話,在單引號前加 N '
declare @變數名B int
exec sp_xml_preparedocument @變數名B output,@變數名A

接下來就是把XML數據形成表在SQL裡面顯示出來= =:

舉個例子,
XML內容是:
<ROOT>
<Customer CustomerID="C01" Name="Samsung">
<Order OrderID="O01" Qty="1000">
<OrderDate>1998-1-1</OrderDate>
<Description>100 missing</Description>
</Order>
<Order OrderID="O02" Qty="200">
<OrderDate>2000-1-1</OrderDate>
<Description>10 smaller than specified size</Description>
</Order>
</Customer>
<Customer CustomerID="C02" Name="Nokia">
<Order OrderID="O03" Qty="500">
<OrderDate>2000-1-1</OrderDate>
<Description>Perfect this time</Description>
</Order>
<Order OrderID="O04" Qty="100"></Order>
</Customer>
</ROOT>

那麼你的代碼就應該這么打:
select*from
openxml(@變數名B,'/ROOT/Customer/Order',1)
with
(
訂單編號 char(3) '@OrderID',
數量 int '@Qty',
訂單日期 date 'OrderDate',
描述 varchar(30) 'Description'
)

with後面是表裡的內容,想要什麼就就打什麼,單引號內是你引用的東西。

最後釋放內存:

exec sp_xml_removedocument @變數名B

呃。。不懂再問把,

C. 怎樣把.xml的數據導入到SQL Server 2008中

bcp
bulk insert
都可以
bcp 實用工具可以在 Microsoft SQL Server 實例和用戶指定格式的數據文件間大容量復制數據。使用 bcp 實用工具可以將大量新行導入 SQL Server 表,或將表數據導入數據文件。
語法舉例:
bcp AdventureWorks.Sales.Currency2 in Currency.dat -T -f Currency.xml
程序裡面最好用這個。如果手動,管理器中導入就可以,用.net程序也可以,xml可以作為一個數據源操作。

熱點內容
安卓平板叫什麼名字 發布:2024-11-27 15:48:12 瀏覽:171
稅盤密碼忘了去改需要帶什麼 發布:2024-11-27 15:41:10 瀏覽:276
拉筋要加密 發布:2024-11-27 15:38:51 瀏覽:323
電腦當伺服器怎麼降低功耗 發布:2024-11-27 15:30:45 瀏覽:641
蘋果手機誇克緩存的視頻怎麼轉為本地視頻 發布:2024-11-27 15:24:05 瀏覽:810
linuxm4 發布:2024-11-27 15:15:12 瀏覽:321
演算法交易現狀 發布:2024-11-27 15:05:49 瀏覽:825
搜同網伺服器為什麼登錄不上 發布:2024-11-27 15:05:41 瀏覽:287
如何讓無線網速變快華為安卓手機 發布:2024-11-27 15:04:13 瀏覽:595
cod17編譯著色器卡住c盤滿了 發布:2024-11-27 14:55:56 瀏覽:386