2015-10-11 4 views
2

Я работаю над пакетом SSIS.SSIS Экспорт таблицы с различными типами столбцов в плоский файл

У меня есть таблица, как показано ниже:

Таблица Имя: Employee_table

EmployeID  EmployeeName  EmployeeDataXML 
============================================== 
1    Mark   <Age>32</Age><Role>Manager</Role> 
2    Albert   <Age>31</Age><Role>Staff</Role> 
============================================== 

Эта таблица будет экспортироваться в плоский файл с именем: Employeedata.dat

Содержание в файле должен выглядеть так:

<EmployeeID>1</EmployeeID><EmployeeName>Mark</EmplyeeName><EmployeeDataXML><Age>32</Age><Role>Manager</Role></EmployeeDataXML> 
<EmployeeID>2</EmployeeID><EmployeeName>Albert</EmplyeeName><EmployeeDataXML><Age>31</Age><Role>Staff</Role></EmployeeDataXML> 

В принципе, employeeid и empl Столбцы oyeename не в формате xml, но все же, когда происходит экспорт, они также должны быть завернуты в xml.

Может ли кто-нибудь вести меня, что является лучшим способом сделать это? Нужно ли здесь использовать какое-либо преобразование? Есть ли какой-либо контроль/задача, которая легко доступна? Может написать инструкцию SQL Select, которая могла бы просто решить это?

Просим руководствоваться.

ответ

4

Да, простой SELECT с помощью FOR XML PATH следует позаботиться об этом:

DECLARE @TestData TABLE 
(
    EmployeID INT NOT NULL, 
    EmployeeName NVARCHAR(50) NOT NULL, 
    EmployeeDataXML XML 
); 

INSERT INTO @TestData (EmployeID, EmployeeName, EmployeeDataXML) 
    VALUES (1, N'Mark', N'<Age>32</Age><Role>Manager</Role>'); 
INSERT INTO @TestData (EmployeID, EmployeeName, EmployeeDataXML) 
    VALUES (2, N'Albert', N'<Age>31</Age><Role>Staff</Role>'); 


SELECT EmployeID, EmployeeName, EmployeeDataXML 
FROM @TestData 
FOR XML PATH(N'Employee'); 

производит следующее:

<Employee> 
    <EmployeID>1</EmployeID> 
    <EmployeeName>Mark</EmployeeName> 
    <EmployeeDataXML> 
    <Age>32</Age> 
    <Role>Manager</Role> 
    </EmployeeDataXML> 
</Employee> 
<Employee> 
    <EmployeID>2</EmployeID> 
    <EmployeeName>Albert</EmployeeName> 
    <EmployeeDataXML> 
    <Age>31</Age> 
    <Role>Staff</Role> 
    </EmployeeDataXML> 
</Employee> 

Вы не имеете элемент родительского <Employee>, показанный на выходе образца, но я не думаю, что файл будет полезен без какого-либо элемента, который переносит элементы поля в «строку».

Смежные вопросы