我正在将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);
没有错误,只需继续执行即可。
答案 0 :(得分:0)
感谢Jamie Drq发表评论,我将xml拆分了。我通过今天早上的前5000条记录,并成功解析了它们,并在5个半小时后将其添加到表中。因此,我将执行此缓慢的零碎程序。
谢谢!