Sql server 将EDI X12 835 XML解析到SQL Server中的表中
我一直在尝试将835XML解析到一个表中。我正在使用以下代码Sql server 将EDI X12 835 XML解析到SQL Server中的表中,sql-server,xml,edi,x12,Sql Server,Xml,Edi,X12,我一直在尝试将835XML解析到一个表中。我正在使用以下代码 Declare @XML XML SET @XML = (SELECT * FROM OPENROWSET(BULK 'C:\835\XML\Processremitcombined.xml', SINGLE_BLOB) AS data) Declare @NoClaims Int INSERT INTO tblX12835_Copy(BPR_Payment, BPR_EffectiveEntryDat
Declare @XML XML
SET @XML = (SELECT *
FROM OPENROWSET(BULK 'C:\835\XML\Processremitcombined.xml', SINGLE_BLOB) AS data)
Declare @NoClaims Int
INSERT INTO tblX12835_Copy(BPR_Payment, BPR_EffectiveEntryDate , TRn_TraceNumber, N1_HospiceNPI ,NM1_Patientlastname, NM1_PatientFirstName, NM1_HIC, DTM_claimDate)
SELECT
-- X.product.query('National_Provider_Identifier').value('.', 'INT'),
X.Product.query('Loop/Loop/CLP/CLP04').value('.', 'nvarchar(max)')' ',
X.Product.query('BPR/BPR16').value('.', 'datetime'),
X.Product.query('TRN/TRN02').value('.', 'nvarchar(25)'),
X.product.query('Loop/N1/N104').value('.', 'nvarchar(25)'),
X.product.query('Loop/Loop/NM1/NM103').value('.', 'nvarchar(max)'),
X.product.query('Loop/Loop/NM1/NM104').value('.', 'nvarchar(max)')' ',
X.product.query('Loop/Loop/NM1/NM109').value('.', 'nvarchar(max)')' ',
X.product.query('Loop/Loop/DTM/DTM02').value('.', 'nvarchar(max)')' '
FROM
@XML.nodes('/Interchange/Interchange/FunctionGroup/Transaction') AS X(Product)
唯一的问题是,存在多个嵌套循环,其中包含同一医疗机构的多个患者信息。因此,当我的例程提取该数据并将其插入到表中时,列(如patientFirstname)包含该循环中的所有名称。我想迭代这些循环,并将每个患者的信息作为单独的记录提取。这就是翻译软件存在的原因。您可以使用835并将其直接转储到SQL。现在,您正在将其解析为XML,然后转换为SQL,灵活性很低。多个故障点,需要维护的批次。为了保持您的范例,您可能必须返回并为每个迭代创建一个XML节点,以便它在SQL端创建记录。这就是翻译软件存在的原因。您可以使用835并将其直接转储到SQL。现在,您正在将其解析为XML,然后转换为SQL,灵活性很低。多个故障点,需要维护的批次。为了保持您的范例,您可能必须返回并为每个迭代创建一个XML节点,以便它在SQL端创建记录。