【问题标题】:Moving XML tags to Table in Sql Server using SSIS使用 SSIS 将 XML 标记移动到 Sql Server 中的表
【发布时间】:2018-06-30 22:10:11
【问题描述】:

我有一个包含以下数据的平面文件,并希望将 Report 列标记值移动到 DB 表中的相应列中,

SNO,EvID,Report
1,1E,<employee><name>John</name><location><Emp_Address>John Address</Emp_Address><city>John City</city></location><Compensation><Salary>2000</Salary><PF>100</PF></Compensation></employee>
2,2E,<employee><name>Jeff</name><location><Emp_Address>Jeff Address</Emp_Address><city>Jeff City</city></location><Compensation><Salary>4000</Salary><PF>400</PF></Compensation></employee>

我需要使用 SSIS 将报告值单独加载到 sql server 表中,如下所示,

有可能吗?我曾尝试在 SSIS 中使用 XML 任务,但不知道如何继续。

【问题讨论】:

  • 您是否设法将任何数据加载到表中?
  • @Nick.McDermaid 不,我不能。

标签: sql sql-server ssis etl ssis-2012


【解决方案1】:

你可以试试下面的代码-

drop table if exists #table1   -- Using Temp tables for example
Create table #table1 (SNO INT, EvID varchar(20), Report xml)

drop table if exists #table2
Create table #table2 (Name nvarchar(50), Emp_Address nvarchar(100), City nvarchar(50), 
Salary numeric(18,8), PF numeric(18,8))    -- Column taken as provided as sample XML data. Choose the data type according to your need.

BULK INSERT #table1 FROM 'C:\<FolderLocation>\<YourFileName>.<FileExtension>'
WITH (
    CODEPAGE = 'RAW', FIRSTROW = 2, FIELDTERMINATOR = ','
)

select * from #table1

INSERT #table2
SELECT Report.value('(/employee/name)[1]', 'varchar(40)') AS Name,
    Report.value('(/employee/location/Emp_Address)[1]', 'varchar(100)') AS Emp_Address,
    Report.value('(/employee/location/city)[1]', 'varchar(50)') AS City,
    Report.value('(/employee/Compensation/Salary)[1]', 'numeric(18,8)') AS Salary,
    Report.value('(/employee/Compensation/PF)[1]', 'numeric(18,8)') AS PF
FROM #table1    -- Use your XML DOM structure to get the proper values

select * from #table2

请注意,我使用 XML 数据类型来存储您的报告列值。 Value() 仅在列的数据类型为 XML 时才有效。

【讨论】:

  • 是否可以在 SSIS 中使用上述查询,如果可以,请告诉我可以在哪里使用。谢谢
  • 您可以在 SSIS 的帮助下将平面文件直接导入表中。对于 SELECT 查询,使用相同的 OLEDB Source 和 OLEDB Destination 将数据插入目标表,并使用 SELECT 查询到 OLEDB Source Object。
猜你喜欢
  • 2014-02-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多