当前位置:首页 » 编程语言 » 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给出的帮助,你可以参照参数试验一下.