📄 新建 文本文档 (2).txt
字号:
复制代码
FF FE 3C 00 3F 00 78 00-6D 00 6C 00 20 00 76 00 *..<.?.x.m.l. .v.*
65 00 72 00 73 00 69 00-6F 00 6E 00 3D 00 22 00 *e.r.s.i.o.n.=.".*
31 00 2E 00 30 00 22 00-20 00 65 00 6E 00 63 00 *1...0.". .e.n.c.*
6F 00 64 00 69 00 6E 00-67 00 3D 00 22 00 75 00 *o.d.i.n.g.=.".u.*
74 00 66 00 2D 00 31 00-36 00 22 00 3F 00 3E 00 *t.f.-.1.6.".?.>.*
3C 00 72 00 6F 00 6F 00-74 00 3E 00 A2 4F 9C 76 *<.r.o.o.t.>..O.v*
0C FA 77 E4 80 00 89 00-00 06 90 06 91 2E 9B 2E *..w.............*
99 34 A2 34 86 00 83 02-92 20 7F 02 4E C5 E4 A3 *.4.4..... ..N...*
34 B2 B7 B3 B7 FE F8 FF-F8 00 3C 00 2F 00 72 00 *4.........<./.r.*
6F 00 6F 00 74 00 3E 00-00 00 00 00 7A EF BB BF *o.o.t.>.....z...*
3C 3F 78 6D 6C 20 76 65-72 73 69 6F 6E 3D 22 31 *<?xml version="1*
2E 30 22 20 65 6E 63 6F-64 69 6E 67 3D 22 75 74 *.0" encoding="ut*
66 2D 38 22 3F 3E 3C 72-6F 6F 74 3E E4 BE A2 E7 *f-8"?><root>....*
9A 9C EF A8 8C EE 91 B7-C2 80 C2 89 D8 80 DA 90 *................*
E2 BA 91 E2 BA 9B E3 92-99 E3 92 A2 C2 86 CA 83 *................*
E2 82 92 C9 BF EC 95 8E-EA 8F A4 EB 88 B4 EB 8E *................*
B7 EF BA B7 EF BF B8 C3-B8 3C 2F 72 6F 6F 74 3E *.........</root>*
00 00 00 00 7A *....z*
示例表
大容量导入或导出 XML 文档时,应当使用在任何文档中都不可能出现的字段终止符;例如,在连续四个 Null (\0) 后紧跟字母 z:\0\0\0\0z。
此示例说明如何为 xTable 示例表使用此字段终止符。若要创建此示例表,请使用下列 CREATE TABLE 语句:
复制代码
USE tempdb
CREATE TABLE xTable (xCol xml);
GO
示例格式化文件
必须在格式化文件中指定字段终止符。示例 D 使用了一个名为 Xmltable.fmt 的非 XML 格式化文件,该文件包含以下内容:
复制代码
9.0
1
1 SQLBINARY 0 0 "\0\0\0\0z" 1 xCol ""
可以使用此格式化文件并通过 bcp 命令、BULK INSERT 语句或 INSERT ... SELECT * FROM OPENROWSET(BULK...) 语句将 XML 文档大容量导入到 xTable 表中。
示例 D
此示例在 BULK INSERT 语句中使用 Xmltable.fmt 格式化文件来导入 XML 数据文件 Xmltable.dat 中的内容。
复制代码
BULK INSERT xTable
FROM 'C:\Xmltable.dat'
WITH (FORMATFILE = 'C:\Xmltable.fmt');
GO
[返回页首]
E. 大容量导出 XML 数据
下面的示例使用 bcp 命令和同一个 XML 格式化文件从上一示例所创建的表中大容量导出 XML 数据。在下面的 bcp 命令中,<server_name> 和 <instance_name> 代表必须使用相应的值替换的占位符:
复制代码
bcp bulktest..xTable out a-wn.out -N -T -S<server_name>\<instance_name>
注意:
在数据库中持久保留 XML 数据时,SQL Server 不保存 XML 编码。因此,在导出 XML 数据时,XML 字段的原始编码将不可用。导出 XML 数据时,SQL Server 使用 UTF-16 编码。
********************* 导入 xml 文件
DECLARE @idoc int
DECLARE @doc varchar(1000)
--sample XML document
SET @doc ='
<root>
<Customer cid= "C1" name="Janine" city="Issaquah">
<Order oid="O1" date="1/20/1996" amount="3.5" />
<Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied
</Order>
</Customer>
<Customer cid="C2" name="Ursula" city="Oelde" >
<Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue
white red">
<Urgency>Important</Urgency>
Happy Customer.
</Order>
<Order oid="O4" date="1/20/1996" amount="10000"/>
</Customer>
</root>
'
-- Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- Execute a SELECT statement using OPENXML rowset provider.
SELECT *
FROM OPENXML (@idoc, '/root/Customer/Order', 1)
WITH (oid char(5),
amount float,
comment ntext 'text()')
EXEC sp_xml_removedocument @idoc
Top
7 楼w3w(w3w)回复于 2005-06-06 19:48:09 得分 0 那是否有工具直接把XML转换成纯文本呢?
Top
8 楼zjcxc(邹建)回复于 2005-06-08 08:05:35 得分 0 xml是纯文本格式吧? 怎么转呢?
Top
9 楼duanduan1122(俺村俺帅!!!)回复于 2005-06-09 08:52:49 得分 20检索和编写 XML 数据
可以执行 SQL 查询返回 XML 格式而不是标准行集的结果。可以直接或从存储过程中执行这些查询。若要直接检索结果,请使用 SELECT 语句的 FOR XML 子句,并在 FOR XML 子句中指定 XML 模式:RAW、AUTO 或 EXPLICIT。
例如,下面的 SELECT 语句从 Northwind 数据库的 Customers 和 Orders 表中检索信息。下面的查询在 FOR XML 子句中指定 AUTO 模式:
SELECT Customers.CustomerID, ContactName, CompanyName,
Orders.CustomerID, OrderDate
FROM Customers, Orders
WHERE Customers.CustomerID = Orders.CustomerID
AND (Customers.CustomerID = N'ALFKI'
OR Customers.CustomerID = N'XYZAA')
ORDER BY Customers.CustomerID
FOR XML AUTO
尽管可用 FOR XML 子句检索 XML 文档形式的数据,但也可用 Transact-SQL OPENXML 函数插入以 XML 文档形式表示的数据。OPENXML 是类似于表或视图的行集提供程序,用于提供内存中 XML 文档上的行集。OPENXML 通过提供 XML 文档内部表示法的行集视图,允许访问 XML 数据,就好象它是关系行集一样。行集中的记录可以存储在数据库表中。OPENXML 可以在 SELECT 和 SELECT INTO 语句中使用,在这些语句中可以指定源表或视图。
下例说明 OPENXML 在 INSERT 和 SELECT 语句中的用法。示例 XML 文档由 <Customers> 和 <Orders> 元素组成。首先,sp_xml_preparedocument 存储过程分析 XML 文档。分析后的文档是 XML 文档各节点(元素、特性、文本、注释等)的树型表示法。然后 OPENXML 引用这个经过分析的 XML 文档并提供该 XML 文档的全部或部分内容的行集视图。使用 OPENXML 的 INSERT 语句从而可将数据从这样的行集插入数据库表。可用几个 OPENXML 调用提供 XML 文档各部分的行集视图并对它们进行处理,例如,将它们插入不同的表中(该过程也称为"将 XML 拆分到表中")。在下例中,一个 XML 文档被这样拆分:使用两个 INSERT 语句将 <Customers> 元素存储在 Customers 表中并将 <Orders> 元素存储在 Orders 表中。
下例还显示带有 OPENXML 的 SELECT 语句从 XML 文档检索 CustomerID 和 OrderDate。
DECLARE @hDoc int
EXEC sp_xml_preparedocument @hDoc OUTPUT,
N'<ROOT>
<Customers CustomerID="XYZAA" ContactName="Joe"
CompanyName="Company1">
<Orders CustomerID="XYZAA"
OrderDate="2000-08-25T00:00:00"/>
<Orders CustomerID="XYZAA"
OrderDate="2000-10-03T00:00:00"/>
</Customers>
<Customers CustomerID="XYZBB" ContactName="Steve"
CompanyName="Company2">No Orders yet!
</Customers>
</ROOT>'
-- Use OPENXML to provide rowset consisting of customer data.
INSERT Customers
SELECT *
FROM OPENXML(@hDoc, N'/ROOT/Customers')
WITH Customers
-- Use OPENXML to provide rowset consisting of order data.
INSERT Orders
SELECT *
FROM OPENXML(@hDoc, N'//Orders')
WITH Orders
-- Using OPENXML in a SELECT statement.
SELECT * FROM OPENXML(@hDoc, N'/ROOT/Customers/Orders') with (CustomerID nchar(5) '../@CustomerID', OrderDate datetime)
-- Remove the internal representation of the XML document.
EXEC sp_xml_removedocument @hDoc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -