读书人

sqlxml

发布时间: 2012-01-18 00:23:26 作者: rapoo

sqlxml,高手请进!急急急急急急急急急急急急急急
问题描述:现在每天有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(上班时间都在线)非常感谢!


[解决办法]

SQL code
declare @xml xmlset @xml='<FLIGHT>     <DATETIME> 2007-11-22   09:27:04 </DATETIME>       <METHOD> MOD </METHOD>       <TYPE> A </TYPE>       <FLIGHTINFOR>     <FLIGHTATTR> 21 </FLIGHTATTR>       <FLIGHTTYPE> 0 </FLIGHTTYPE>       <FLIGHTDATETIME>     <PLANDATE> 2007-11-22 </PLANDATE>       <ADT   />       <EDT> 2007-11-22   10:33:00 </EDT>       <SDT> 2007-11-22   09:30:00 </SDT>       </FLIGHTDATETIME>     </FLIGHTINFOR>     </FLIGHT>'SELECT    testByjinjazz.value('DATETIME[1]', 'DATETIME') DATETIME,        testByjinjazz.value('METHOD[1]', 'nvarchar(10)') METHOD,        testByjinjazz.value('TYPE[1]', 'nvarchar(10)') TYPE,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTATTR[1]','int') FLIGHTATTR,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTTYPE[1]','int') FLIGHTTYPE,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTDATETIME[1]/PLANDATE[1]','nvarchar(10)') PLANDATE,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTDATETIME[1]/ADT[1]','DATETIME') ADT,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTDATETIME[1]/EDT[1]','DATETIME') EDT,        testByjinjazz.value('FLIGHTINFOR[1]/FLIGHTDATETIME[1]/SDT[1]','DATETIME') SDTFROM   @xml.nodes('//FLIGHT') AS R(testByjinjazz)/*DATETIME                METHOD     TYPE       FLIGHTATTR  FLIGHTTYPE  PLANDATE   ADT                     EDT                     SDT----------------------- ---------- ---------- ----------- ----------- ---------- ----------------------- ----------------------- -----------------------2007-11-22 09:27:04.000  MOD        A         21          0            2007-11-2 1900-01-01 00:00:00.000 2007-11-22 10:33:00.000 2007-11-22 09:30:00.000(1 行受影响)*/
[解决办法]


不难,就是代码多了点。
可以给你个思路
1,合并文件为一个文件
2,分拆成包含一条xml数据的串
3,读单个xml串,读单个xml串的方法你上个帖子已经有了。

读书人网 >SQL Server

热点推荐