我收到必须加载到规范化表中的非规范化文本文件。将非规范化文件中的数据加载到规范化表中
规格化表:
客户id - 类别 - 类别2 - 类别3 - 类别4
1 - A - 乙 - C - d
当该归一化,它应看起来像:
客户id - 类别
1 - 甲
1 - B
1 - Visual C
1 - d
编写T-SQL语句以实现此目标的最佳方式是什么(SQL Server 2008)?
我收到必须加载到规范化表中的非规范化文本文件。将非规范化文件中的数据加载到规范化表中
规格化表:
客户id - 类别 - 类别2 - 类别3 - 类别4
1 - A - 乙 - C - d
当该归一化,它应看起来像:
客户id - 类别
1 - 甲
1 - B
1 - Visual C
1 - d
编写T-SQL语句以实现此目标的最佳方式是什么(SQL Server 2008)?
使用UNPIVOT
关键字:http://technet.microsoft.com/en-us/library/ms177410.aspx
当然你要替换[文件]带有某种OPENROWSET查询,或者使用导入/导出向导将数据获取到一个临时表。
SELECT CustomerId, Category
FROM
(
SELECT CustomerId, Category, Category2, Category3, Category4
FROM [File]
) tblDenormalized
UNPIVOT
(
Category FOR Column IN
(Category, Category2, Category3, Category4)
) AS unpivot;
完美...谢谢! – Sesame 2010-08-09 18:34:33
我会用一种编程语言遍历并为每一行做4次插入..但这对我来说很舒服。 – Fosco 2010-08-09 17:17:55
或者为每个类别使用一个INSERT查询。 – 2010-08-09 17:21:18