XML到SQL查询挂起的问题

时间:2019-05-19 21:54:18

标签: sql xml

我正在将XML文档转换为SQLExpress数据库表。 XML有42,000条记录。当我运行查询时,它只是继续执行而从未完成。最后运行了48小时,但没有完成。我结束了查询,并从表中运行了一个SELECT *,它为空。

这是我的查询:

Use DATABASE
Go

INSERT INTO TABLE(CitizenName, LicenseNo, Address, CityStateZip, IssueDate, ExpireDate, Type, Restriction, MayOperate, Sex, DOB, Height, Weight, Hair, Eyes, Remarks, NewRenewal)
SELECT
   MY_XML.BMVDLLIST.query('NAMELASTFIRSTMI').value('.', 'VARCHAR(150)'),
   MY_XML.BMVDLLIST.query('LICENSE_x0020_NO').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('ADDRESS_x0020_VILLAGE').value('.', 'VARCHAR(200)'),
   MY_XML.BMVDLLIST.query('CITY_x0020_STATE_x0020_ZIP').value('.', 'VARCHAR(200)'),
   MY_XML.BMVDLLIST.query('ISSUEDATE').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('EXPIREDATE').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('TYPE').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('RESTRICTION').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('MAYOPERATE').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('SEX').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('DOB').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('HEIGHT').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('WEIGHT').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('HAIR').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('EYES').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('REMARKS').value('.', 'VARCHAR(50)'),
   MY_XML.BMVDLLIST.query('NEWRENEW').value('.', 'VARCHAR(50)')

FROM (SELECT CAST(MY_XML AS xml)
      FROM OPENROWSET(BULK 'C:\Users\USER\Desktop\BMVDLLIST.xml', SINGLE_BLOB) AS T(MY_XML)) AS T(MY_XML)
      CROSS APPLY MY_XML.nodes('dataroot/BMVDLLIST') AS MY_XML (BMVDLLIST);

没有错误,只需继续执行即可。

1 个答案:

答案 0 :(得分:0)

感谢Jamie Drq发表评论,我将xml拆分了。我通过今天早上的前5000条记录,并成功解析了它们,并在5个半小时后将其添加到表中。因此,我将执行此缓慢的零碎程序。

谢谢!