早安技師,根據文檔類型定義XML的動態表創建
任何人都可以分享您的專業知識。
我有一個文檔類型定義的XML文檔(1GB大小)。
我需要將數據加載到sql表中,但挑戰是必須在運行時創建的表結構依賴於.dtd文件。
的.dtd文件是不斷根據客戶的客戶
我是新來的XML更改,請幫幫我。如果需要,我可以提供xml和.dtd。
代碼我已經用來拉從XML數據表
;With Cte
AS
(SELECT i.value('(../@action)[1]','varchar(20)') AppAction,
i.value('(../@id)[1]','varchar(20)') AppId,
i.value('.','varchar(20)') Notes,
i.value('(../BaseVehicle/@id)[1]','varchar(20)') BaseVehicle,
k.value('(./Qual/@id)[1]','varchar(20)') Qual,
i.value('(../Qty)[1]','varchar(20)') Qty,
i.value('(../PartType/@id)[1]','varchar(20)') PartType,
i.value('(../SubModel/@id)[1]','varchar(20)') SubModel,
i.value('(../EngineBase/@id)[1]','varchar(20)') EngineBase,
i.value('(../EngineVIN/@id)[1]','varchar(20)') EngineVIN,
k.value('(./MfrLabel)[1]','varchar(20)') MfrLabel,
i.value('(../Position/@id)[1]','varchar(20)') PositionId,
i.value('(../Part)[1]','varchar(20)') Part,
k.value('(./Qual/param/@value)[1]','varchar(20)') ParamValue,
j.value('.','varchar(20)') RecordCount
FROM @X.nodes('AMUL/App[@action="A"]/Note') x(i)
OUTER APPLY x.i.nodes('../../Footer/RecordCount')y(j)
OUTER APPLY y.j.nodes('../../App')z(k))
SELECT
AppAction,AppId,BaseVehicle,Qual,Qty,PartType,MfrLabel,PositionId,Part,ParamValue,SubModel,EngineBase,EngineVIN,RecordCount,
STUFF((SELECT ' ; ' + Notes
FROM Cte X WHERE X.BaseVehicle = Y.BaseVehicle
GROUP BY BaseVehicle,Notes
FOR XML PATH('')), 1, 2, '') Note
FROM Cte Y
GROUP BY
BaseVehicle,AppAction,AppId,Qual,Qty,PartType,MfrLabel,PositionId,Part,ParamValue,SubModel,EngineBase,EngineVIN,RecordCount
由於一噸。
您提供的將是有幫助的任何額外的細節,但是從我的頭頂,如果我不得不做這個任務,我不想嚴格做到這一點在SQL,但發展的外部工具來做到這一點在.NET或其他您熟悉的語言中。 – Jeremy
感謝您的幫助。請建議。我被困在這裏。 :)我們可以在這裏附加.dtd或xml文件。 – Shan
你有什麼編程經驗? – Jeremy