如何把以下xml中的数据存入sqlserver数据库相应的字段中 需要一个中间转换的工具,如C#的dataset,好像不能直接导进去。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果你的数据已经知道,可以直接用下面的方法DECLARE @idoc int,@doc varchar(8000)SET @doc ='<?xml version="1.0" encoding="GB2312"?><电子病历> <病案 num="1"> <姓名>梁景</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="2"> <姓名>张路</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="3"> <姓名>何江</姓名> <性别>男</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案></电子病历>'EXEC sp_xml_preparedocument @idoc OUTPUT, @docinsert into 你要接收数据导入的表 --如果你仅想显示,就去掉此句SELECT * FROM OPENXML (@idoc, '/电子病历/病案',2) WITH (姓名 varchar(20) ,性别 varchar(2) ,出生日期 datetime ,婚姻 varchar(10) ,职业 varchar(50) ) 如果你的xml是一个文件,可以用下面的方法,假设你的xml文件是:c:\a.xmlDECLARE @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/*SET @doc ='<?xml version="1.0" encoding="GB2312"?><电子病历> <病案 num="1"> <姓名>梁景</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="2"> <姓名>张路</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="3"> <姓名>何江</姓名> <性别>男</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案></电子病历>'--*/EXEC sp_xml_preparedocument @idoc OUTPUT, @docSELECT * FROM OPENXML (@idoc, '/电子病历/病案',2) WITH (姓名 varchar(20) ,性别 varchar(2) ,出生日期 datetime ,婚姻 varchar(10) ,职业 varchar(50) ) 如果你的xml是一个文件,可以用下面的方法,假设你的xml文件是:c:\a.xmlDECLARE @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/*SET @doc ='<?xml version="1.0" encoding="GB2312"?><电子病历> <病案 num="1"> <姓名>梁景</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="2"> <姓名>张路</姓名> <性别>女</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案> <病案 num="3"> <姓名>何江</姓名> <性别>男</性别> <出生日期>1985-7-12</出生日期> <婚姻>已婚</婚姻> <职业>工人</职业> </病案></电子病历>'--*/EXEC sp_xml_preparedocument @idoc OUTPUT, @docSELECT * FROM OPENXML (@idoc, '/电子病历/病案',2) WITH (姓名 varchar(20) ,性别 varchar(2) ,出生日期 datetime ,婚姻 varchar(10) ,职业 varchar(50) ) 谢谢zjcxc(邹建) 。我已经弄出来了。但和你的不一样。我先研究一下你的代码。谢谢。分嘛等我研究一下会通知你去拿分的!谢谢 sp_xml_preparedocument 存储过程好想不能处理中文的XML文档 westseason(西城时代)你是用什么方发处理的呢?贴出来大家一起看看 删除出此状况何故(有图) 帮我看看什么原因 有人知道.用SQL的select后面加什么能让查询到的记录集分页显示 请教一个SQL查询语句 拷贝了data目录下文件,重装系统后怎么恢复数据? 两个表查询,主键关联:查询在a表有,而在b表没有的所有记录。 行转换成列(补充提问) 请教:Informix数据库存储过程中TEXT数据类型的问题 怎样将一个表中的某几个字段拷贝到另一个数据库的表中?谢谢! ADO返回记录集的问题? 一个简单的查询语句怎么写 请教SQLSERVER的IDENTITY字段
DECLARE @idoc int,@doc varchar(8000)SET @doc ='
<?xml version="1.0" encoding="GB2312"?>
<电子病历>
<病案 num="1">
<姓名>梁景</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="2">
<姓名>张路</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="3">
<姓名>何江</姓名>
<性别>男</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
</电子病历>
'EXEC sp_xml_preparedocument @idoc OUTPUT, @docinsert into 你要接收数据导入的表 --如果你仅想显示,就去掉此句
SELECT * FROM OPENXML (@idoc, '/电子病历/病案',2)
WITH (姓名 varchar(20)
,性别 varchar(2)
,出生日期 datetime
,婚姻 varchar(10)
,职业 varchar(50)
)
create table #tb (doc varchar(8000))
bulk insert #tb from 'c:\a.xml'--将读取到的数据保存到变量中
set @doc=''
select @doc=@doc+doc from #tb--删除临时表
drop table #tb/*
SET @doc ='
<?xml version="1.0" encoding="GB2312"?>
<电子病历>
<病案 num="1">
<姓名>梁景</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="2">
<姓名>张路</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="3">
<姓名>何江</姓名>
<性别>男</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
</电子病历>
'
--*/EXEC sp_xml_preparedocument @idoc OUTPUT, @docSELECT * FROM OPENXML (@idoc, '/电子病历/病案',2)
WITH (姓名 varchar(20)
,性别 varchar(2)
,出生日期 datetime
,婚姻 varchar(10)
,职业 varchar(50)
)
create table #tb (doc varchar(8000))
bulk insert #tb from 'c:\a.xml'--将读取到的数据保存到变量中
set @doc=''
select @doc=@doc+doc from #tb--删除临时表
drop table #tb/*
SET @doc ='
<?xml version="1.0" encoding="GB2312"?>
<电子病历>
<病案 num="1">
<姓名>梁景</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="2">
<姓名>张路</姓名>
<性别>女</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
<病案 num="3">
<姓名>何江</姓名>
<性别>男</性别>
<出生日期>1985-7-12</出生日期>
<婚姻>已婚</婚姻>
<职业>工人</职业>
</病案>
</电子病历>
'
--*/EXEC sp_xml_preparedocument @idoc OUTPUT, @docSELECT * FROM OPENXML (@idoc, '/电子病历/病案',2)
WITH (姓名 varchar(20)
,性别 varchar(2)
,出生日期 datetime
,婚姻 varchar(10)
,职业 varchar(50)
)
我先研究一下你的代码。谢谢。
分嘛等我研究一下会通知你去拿分的!谢谢