sql怎么把xml转换

sql怎么把xml转换,第1张

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左上角按钮,在d出的选项中,点击“另存为”

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

2、选择最后一项:其他格式。

3、接下来,重命名一下文件名,并选择文件类型为:

XML数据(*.xml)

4、点击“保存”按钮,会出现如下错误警告:

因为工作簿不包含任何XML映射,所以无法保存任何XML数据。

单击“帮助”以获取详细信息。

5、这个原因是我们的工作簿只是普通的Excel数据,的确没有做过XML映射,或者Excel数据也不是从XML文件导入的答巧仿。

这时,我们尝试另存为另一种文件类型:

XML电子表格2003(*.xml)

6、点击保存按钮。

7、这时会d出一个兼容性对话框,问你是否保持工作簿的这种格式。

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.Fileimport java.sql.Connectionimport java.sql.DriverManagerimport java.sql.ResultSetimport java.sql.SQLExceptionimport java.sql.Statementimport javax.xml.parsers.DocumentBuilderimport javax.xml.parsers.DocumentBuilderFactoryimport javax.xml.transform.Transformerimport javax.xml.transform.TransformerFactoryimport javax.xml.transform.dom.DOMSourceimport javax.xml.transform.stream.StreamResultimport org.w3c.dom.Documentimport org.w3c.dom.Elementimport org.w3c.dom.NamedNodeMapimport org.w3c.dom.Nodeimport org.w3c.dom.NodeListimport org.w3c.dom.Textpublic 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=0j"+"\n")} else if(attr==null){ System.out.print("<"+element.getNodeName()+">")} if(element.hasChildNodes()){ for(int k=0k "+"\n")}}。

SQL Server 使得以XML导出数据变得更加简单 但在SQL Server 中导入XML数据并对其进行处理则有些麻烦

如果你参考Books Online(BOL) 你会发现有相关的条目 包括OPENXML以及 OPENROWSET 所有的这些例子都支持将XML文本作为已经声明的变量 这对于经常处理文本的用户来说非常方便 但对于希望在开发中读取XML文件并进行相应处理的开发人员来说就不是这样了 处理这样的问题 或许最好从内到外来对其进行分析

OPENXML是一个rowset函数(即返回一个rowset) 它的工作方式类似于rowset函数OPENQUERY和 OPENROWSET 使用OPENXML可以对XML数据执行JOINs *** 作而无需首先导入数据 你还可以将其同INSERT SELECT UPDATE以及DELETE等 *** 作联合使用 然而 要使用OPENXML 你必须执行两项OPENQUERY和OPENROWSET并不需要的任务 这两项任务需要两个系统存储进程 第一个是sp_xml_preparedocument 它将读取特定的XML文本并将其内容提取到内存中 其语法如下

sp_xml_preparedocument @hdoc = OUTPUT

[ @xmltext = ]

[ @xpath_namespaces =

具体参数如下 @hdoc 指向某内存区域的句柄(从作用上看等同于一个指针) 相关数据存放在这里 注意这是一个输出变量 当该进程运行后 该变量将包含指向XML文件内容在内存地址的句柄 由于你需要在随后使用此结果 因此要确保对其进行保存@xmltext 实际上你所希望处理的XML文本@xml_namespaces 为了正常 *** 作你的XML数据所需要的任何名字空间索引(namespace references) 注意在这里出现的任何URL都需要用尖括号(<>)括起来假设所传递的这些参数都有效 并且XML文档存在 那么你的XML数据就会被存放到内存中去 现在你就可以调用 sp_xml_preparedocument 传递存放有XML文件的变量 然后执行OPENXML 语法如下

OPENXML(idocint [in] rowpatternnvarchar[in] [flag *** yte[in]])

[WITH (SchemaDeclaration | TableName)]

注意 在本文中没有足够的文字来描述OPENXML所接收的敏银蚂参数 请参桥埋阅BOL以获取更多信息 在Transact SQL Reference中查找OPENXML

现在我们已经到达了最后的步骤 所有剩下的工作就是导入一个实际的XML文件到SQL并进行处理(很奇快为什么所有的BOL示例都没有涉及到这一关键的部分) (我必须感谢我的同事Billy Pang所给予的帮助 他帮助我解决这个问题 并给出了代码——尽管出于本文需要我对代码进行了裁减 谢谢Billy!) 基本的技巧搏氏是 将文件逐行按文本读取 然后把所有读取的行连接为一个大的VARCHAR变量 最后 将变量传递给前面所说的代码

以下就是读取文件并将其内容存放到某变量的代码

DECLARE @FileName varchar( )

DECLARE @ExecCmd VARCHAR( )

DECLARE @y INT

DECLARE @x INT

DECLARE @FileContents VARCHAR( )

CREATE TABLE #tempXML(PK INT NOT NULL IDENTITY( ) ThisLine VARCHAR( ))

SET @FileName = C:\Temp\CurrentSettings xml

SET @ExecCmd = type + @FileName

SET @FileContents =

INSERT INTO #tempXML EXEC master dbo xp_cmdshell @ExecCmd

SELECT @y = count(*) from #tempXML

SET @x =

WHILE @x <>@y

BEGIN

SET @x = @x +

SELECT @FileContents = @FileContents + ThisLine from #tempXML WHERE PK

= @x

END

SELECT @FileContents as FileContents

DROP TABLE #tempXML

现在在变量@FileContents变量中你已经获得了文件的全部内容 所需要做的只是将变量通过@xmltext参数传递给sp_xml_preparedocument 然后再调用OPENXML

lishixinzhi/Article/program/SQLServer/201311/22101


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12199330.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存