高手请进!xml导入sql 2000问题!

bang22602028 2007-11-30 05:22:11
问题描述:现在每天有20多个xml文件产生,一个就是条数据,现在要把每天产生的数据导入到sql里面;
例如其中一个xml文件内容如下所示:
<?xml version="1.0" encoding="GB2312" ?>
- <FLIGHT>
<DATETIME>2007-11-22 09:27:04</DATETIME>
<METHOD>MOD</METHOD>
<TYPE>A</TYPE>
- <FLIGHTINFOR>
<FLIGHTATTR>21</FLIGHTATTR>
<FLIGHTTYPE>0</FLIGHTTYPE>
<AIRCRAFTTYPE>E145</AIRCRAFTTYPE>
<REGISTRATION>3062</REGISTRATION>
<FLIGHTNUMBER>CZ3321</FLIGHTNUMBER>
<PRIMARYFLT />
<RELATEDFLT />
<FLIGHTSTATUS>COM</FLIGHTSTATUS>
<PORTNO />
- <FLIGHTDATETIME>
<PLANDATE>2007-11-22</PLANDATE>
<ADT />
<EDT>2007-11-22 10:33:00</EDT>
<SDT>2007-11-22 09:30:00</SDT>
</FLIGHTDATETIME>
- <STATION>
<ORIGIN>CAN</ORIGIN>
<DESTINATION>YIH</DESTINATION>
<VIA />
</STATION>
</FLIGHTINFOR>
- <DEP>
- <CHECKIN>
<COUNTEROPENDT />
<COUNTER />
</CHECKIN>
<DEPTERMINAL />
<GATE />
</DEP>
- <ARR>
<BELT>1</BELT>
</ARR>
</FLIGHT>
2,现在的问题是要把这些数据导入到sql数据库里面的一个表里(xml数据结构与sql数据库表结构不一致)
备注:最好是有工具之类的导入的(写程序太老火),我研究了2天了,对sqlxml还是不能完全了解,知道有这个批量导入xml的功能
如果有那位高手以前做个这样的项目,请发一个详细的做法,或者用那个工具及其怎么试用。非常感谢
本人qq:22602028(上班时间都在线)非常感谢!
...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
bang22602028 2007-12-05
  • 打赏
  • 举报
回复
感谢kelph在QQ上给我的语句,可以将多个文件同时写入到表中
分够结贴!
bang22602028 2007-12-05
  • 打赏
  • 举报
回复
汗,不够分了
kelph 2007-12-04
  • 打赏
  • 举报
回复
 
--哦,最后不要忘了
EXEC sp_xml_removedocument @idoc

kelph 2007-12-04
  • 打赏
  • 举报
回复
 DECLARE @idoc int;
DECLARE @doc varchar(4000);
SET @doc ='<?xml version="1.0" encoding="GB2312" ?> <FLIGHT>
<DATETIME> 2007-11-22 09:27:04 </DATETIME>
<METHOD> MOD </METHOD>
<TYPE> A </TYPE>
<FLIGHTINFOR>
<FLIGHTATTR> 21 </FLIGHTATTR>
<FLIGHTTYPE> 0 </FLIGHTTYPE>
<AIRCRAFTTYPE> E145 </AIRCRAFTTYPE>
<REGISTRATION> 3062 </REGISTRATION>
<FLIGHTNUMBER> CZ3321 </FLIGHTNUMBER>
<PRIMARYFLT />
<RELATEDFLT />
<FLIGHTSTATUS> COM </FLIGHTSTATUS>
<PORTNO />
<FLIGHTDATETIME>
<PLANDATE> 2007-11-22 </PLANDATE>
<ADT />
<EDT> 2007-11-22 10:33:00 </EDT>
<SDT> 2007-11-22 09:30:00 </SDT>
</FLIGHTDATETIME>
<STATION>
<ORIGIN> CAN </ORIGIN>
<DESTINATION> YIH </DESTINATION>
<VIA />
</STATION>
</FLIGHTINFOR>
<DEP>
<CHECKIN>
<COUNTEROPENDT />
<COUNTER />
</CHECKIN>
<DEPTERMINAL />
<GATE />
</DEP>
<ARR>
<BELT> 1 </BELT>
</ARR>
</FLIGHT>
'
create table temp (datetime datetime,method varchar(20),type char(1))
EXEC sp_xml_preparedocument @Idoc OUTPUT, @doc
insert temp
SELECT * FROM OPENXML (@Idoc, '/FLIGHT',2)
WITH (DATETIME DATETIME ,METHOD varchar(20),TYPE char(1))
select * from temp
/*
datetime method type
------------------------------------------------------ -------------------- ----
2007-11-22 09:27:04.000 MOD A

*/

newqm 2007-12-01
  • 打赏
  • 举报
回复
帮顶
  • 打赏
  • 举报
回复
使用语句的话如下

可以将多条数据组成一棵XML树
将XML树作为varchar参数传入
用insert xx select xxx from openxml() 的语法插入数据

一个小例子:*/
create table xmltable(name nvarchar(20),Intro nvarchar(20))

declare @ssss as nvarchar(2000) ;

set @ssss = N'<root>

<dbo.xmltable name="XML中的" Intro="XML中的"></dbo.xmltable>

<dbo.xmltable name="XML中的" Intro="XML中的"></dbo.xmltable>

<dbo.xmltable name="XML中的" Intro="XML中的"></dbo.xmltable>

</root>' ;

declare @idHandle as int ;

EXEC sp_xml_preparedocument @idHandle OUTPUT, @ssss


insert into xmltable(Name,Intro)

select * from openxml(@idHandle,N'/root/dbo.xmltable')

with dbo.xmltable

EXEC sp_xml_removedocument @idHandle


  • 打赏
  • 举报
回复
使用dts可以导入吧
不过没试过

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧