如何从一个xml文件中读取内容然后在sqlserver中分析数据 你的意思是把xml文件显示在dbgrid里还是把xml文件导入到数据库里? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --示例DECLARE @idoc int,@doc varchar(8000)--从文件中读出XML内容到临时表create table #tb (doc varchar(8000))bulk insert #tb from 'c:\a.xml'--将读取到的数据保存到变量中set @doc=''select @doc=@doc+doc from #tb--删除临时表drop table #tb/*--xml文档内容SET @doc ='<?xml version=''1.0'' encoding="gb2312"?><LanguageSource><Book> <type>报告文学</type> <author>不详</author> <title>不详</title> <context> <chapter> <title>不详1</title> <doc>不详1</doc> </chapter> <chapter> <title>不详2</title> <doc>不详2</doc> </chapter> </context></Book></LanguageSource>'--*/EXEC sp_xml_preparedocument @idoc OUTPUT, @doc--创建测试的表create table 作者表(作者ID int identity(1,1),作者名字 varchar(50),作者介绍 varchar(50))create table 类型表(类型ID int identity(1,1),类型名 varchar(50))create table 书名列表(书名ID int identity(1,1),作者ID int,类型ID int,书名 varchar(50))--下面是数据处理declare @作者ID int,@类型ID int--作者表:作者ID、作者名字、作者介绍insert 作者表(作者名字)SELECT * FROM OPENXML (@idoc, '/LanguageSource/Book',2)WITH ( 作者名字 varchar(50) 'author' )set @作者id=@@identity--类型表:类型ID、类型名insert into 类型表(类型名)SELECT * FROM OPENXML (@idoc, '/LanguageSource/Book',2)WITH ( 类型名 varchar(50) 'type' )set @类型ID=@@identity--书名列表:书名ID、作者ID、类型ID、书名(也就是XML中的第一个TITLE)insert into 书名列表(作者ID,类型ID,书名)SELECT @作者ID,@类型ID,* FROM OPENXML (@idoc, '/LanguageSource/Book',2)WITH ( 书名 varchar(50) 'title' )EXEC sp_xml_removedocument @idocgo--显示处理结果select * from 作者表select * from 类型表select * from 书名列表--删除测试表drop table 作者表,类型表,书名列表 bulk insert #tb from 'c:\a.xml'?怎么解释? SQL2008备份长度 mysql问题:求解决。。。Could not obtain connection metadata 一个关于去除和恢复自增属性的高难度的问题 SQL安装问题!!!!!!! 如何添加约束(断言) 我这段语句错在那了? 如何是用参数启动SQL服务 请教:vc 数据库 包含ODA库文件是发生了编译错误 SQL SERVER是按主键排序的吗?怎样才能让它按identity类型的键排序? 把一个表的数据复制到另一个表中 任务表,员工表,如果不建立分配表会引发哪些异常,即是多多关系 到處亂問。。。誰答對了給多份
create table #tb (doc varchar(8000))
bulk insert #tb from 'c:\a.xml'--将读取到的数据保存到变量中
set @doc=''
select @doc=@doc+doc from #tb--删除临时表
drop table #tb/*--xml文档内容
SET @doc ='
<?xml version=''1.0'' encoding="gb2312"?>
<LanguageSource>
<Book>
<type>报告文学</type>
<author>不详</author>
<title>不详</title>
<context>
<chapter>
<title>不详1</title>
<doc>不详1</doc>
</chapter>
<chapter>
<title>不详2</title>
<doc>不详2</doc>
</chapter>
</context>
</Book>
</LanguageSource>'
--*/
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc--创建测试的表
create table 作者表(作者ID int identity(1,1),作者名字 varchar(50),作者介绍 varchar(50))
create table 类型表(类型ID int identity(1,1),类型名 varchar(50))
create table 书名列表(书名ID int identity(1,1),作者ID int,类型ID int,书名 varchar(50))--下面是数据处理
declare @作者ID int,@类型ID int--作者表:作者ID、作者名字、作者介绍
insert 作者表(作者名字)
SELECT * FROM OPENXML (@idoc, '/LanguageSource/Book',2)
WITH (
作者名字 varchar(50) 'author'
)
set @作者id=@@identity--类型表:类型ID、类型名
insert into 类型表(类型名)
SELECT * FROM OPENXML (@idoc, '/LanguageSource/Book',2)
WITH (
类型名 varchar(50) 'type'
)
set @类型ID=@@identity--书名列表:书名ID、作者ID、类型ID、书名(也就是XML中的第一个TITLE)
insert into 书名列表(作者ID,类型ID,书名)
SELECT @作者ID,@类型ID,* FROM OPENXML (@idoc, '/LanguageSource/Book',2)
WITH (
书名 varchar(50) 'title'
)EXEC sp_xml_removedocument @idocgo--显示处理结果
select * from 作者表
select * from 类型表
select * from 书名列表--删除测试表
drop table 作者表,类型表,书名列表