Перемещение тегов XML в таблицу на сервере Sql с использованием служб SSIS - PullRequest
0 голосов
/ 30 июня 2018

У меня плоский файл с данными ниже, и я хочу переместить Отчет значения тега столбца в соответствующие столбцы таблицы БД,

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>

Мне нужно загрузить только значения отчета в таблицу сервера sql, как показано ниже, используя SSIS, enter image description here

Возможно ли это? Я пытался использовать задачу XML в SSIS, но не уверен, что делать дальше.

1 Ответ

0 голосов
/ 30 июня 2018

Вы можете попробовать код ниже -

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...