Mou*_*uru 2 xml sql-server ssis export flat
我正在开发 SSIS 包。
我有一张表如下:
表名称:Employee_table
EmployeID EmployeeName EmployeeDataXML
==============================================
1 Mark <Age>32</Age><Role>Manager</Role>
2 Albert <Age>31</Age><Role>Staff</Role>
==============================================
Run Code Online (Sandbox Code Playgroud)
该表必须导出到名为: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>
Run Code Online (Sandbox Code Playgroud)
基本上,employeeid 和employeename 列不是xml 格式,但当导出发生时,它们也应该包含在xml 中。
有人可以指导我哪一个是最好的方法吗?我需要在这里使用任何转换吗?是否有任何可用的控制/任务?编写一条 SQL Select 语句可以简单地解决这个问题吗?
请指导。
是的,一个简单的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');
Run Code Online (Sandbox Code Playgroud)
产生以下结果:
<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>
Run Code Online (Sandbox Code Playgroud)
您没有<Employee>在示例输出中显示父元素,但我认为如果没有某些元素将字段元素包装到“行”中,该文件将无法使用。