【发布时间】:2011-07-12 01:10:23
【问题描述】:
我有需要导入父子表的非规范化数据(来自文件)。源数据是这样的:
Account# Name Membership Email
101 J Burns Gold alpha@foo.com
101 J Burns Gold bravo@foo.com
101 J Burns Gold charlie@yay.com
227 H Gordon Silver red@color.com
350 B Clyde Silver italian@food.com
350 B Clyde Silver mexican@food.com
我应该使用 SSIS 的哪些部分、部分或策略将前三列读入父表,并将第四列(电子邮件)读入子表?对于允许使用的父密钥,我有几个选项:
- 直接使用Account#作为主键
- 在导入过程中使用由 SSIS 生成的代理键
- 配置身份主键
我确定我已经按难度递增的顺序列出了我的主键选项。我有兴趣知道如何做第一个和最后一个选项 - 我将推断如何实现中间选项。再次强调,我对 SSIS 解决方案很感兴趣。我正在寻找使用 SSIS 语言的答案,而不是程序、技术中立的答案。
我的问题有点类似于another SO question,答案是模糊的可行性。希望能给出更详细的指导。我已经知道如何通过创建“分段”中间步骤来解决这个问题,其中父子分离实际上是用直接 SQL 处理的。但是,我很好奇如何在没有这种中间步骤的情况下做到这一点。
在我看来,这种导入非常普遍,以至于会有一种广为人知的公式化方式来处理它——这是 SSIS 擅长的一种技术。到目前为止,我还没有看到任何直接的答案。
Update #1:基于cmets,我对样本数据进行了更明显的非规范化调整。我还从“平面文件”中删除了“平面”,这样语义就不会干扰问题。
Update #2:我对使用 SSIS 语言的解决方案更加感兴趣。
【问题讨论】:
-
我在您提供的数据中看不到父子关系。它看起来像一对多场景中的第二个表。
-
+1 @Steve - 这不是非规范化或平坦的。
-
我已根据您的 cmets 调整了问题。有建议的答案吗?
标签: sql-server sql-server-2008 import ssis etl