我有一個查詢可以很好地將XML數據導入SQL表(通常)。我目前的問題是,我試圖使用這個查詢與一個更大的XML文件,並最大限度地減少我的tempdb(和磁盤空間),並失敗。誰能幫忙?SQL - 大型XML文件在導入時最大限度地減少TEMPDB
;WITH XMLNAMESPACES(DEFAULT 'http://www.adc.ca/ETS/v3')
INSERT INTO [CC-DB].[dbo].[TourTimeLogs] ([Rig],[Job],[Date],[Sheet],[Rev],[TourID],[StartTime],[EndTime],[Mins],[Code],[Detail])
SELECT
RIG = XC.value('(../../../../../../Rig/RigId)[1]', 'varchar(100)'),
JOB = XC.value('(../../../../../../JobNo)[1]', 'varchar(100)'),
DATE = XC.value('(../../../../Date)[1]', 'date'),
SHEET = XC.value('(../../../../SheetNo)[1]', 'varchar(100)'),
REV = XC.value('(../../../../Revision)[1]', 'varchar(100)'),
TOURID = XC.value('(../../@tourId)[1]', 'varchar(100)'),
STARTTIME = XC.value('(FromTime)[1]', 'datetime'),
ENDTIME = XC.value('(ToTime)[1]', 'datetime'),
MINS = datediff(minute, XC.value('(FromTime)[1]', 'datetime'), XC.value('(ToTime)[1]', 'datetime')),
TIMECODE = XC.value('(TimeCodeNo)[1]', 'varchar(100)'),
DETAIL = XC.value('(Detail)[1]', 'varchar(100)')
FROM
[CC-DB].[dbo].[XmlSourceTable] SRC
CROSS APPLY
SRC.XmlData.nodes('/ETS/WellTours/WellTour/DayTours/DayTour/Tours/Tour/TimeLogs/TimeLog') AS XT(XC)
tempdb的大小是可調整的,並且tempdb的數據文件的位置也可以設置。因此,您可以將tempdb移動到具有足夠空間的磁盤上。 – usterdev
我們的網絡磁盤空間有限,最後一次我用一個巨大的文件嘗試了這個 - tempdb上升到20GB,查詢失敗。 –
如何讀取較小部分的XML文件並將其移至數據庫。這可以通過一個簡單的.NET頁面完成。 –