1

我有一个看起来像这样的表:

Person  Project1 Project2 Project3 WorkedWith1  WorkedWith2  WorkedWith3
John    A        B        Null     Ann          Mary         Null
Ann     A        B        C        Jeff         Null         Null
....

我正在寻找一种工具,可以帮助我将其转换为 1NF,而无需我编写任何代码。

具体来说,在这个例子中,我会告诉工具我想将数据重新排列到表PersonsProjectsAssigned(以多对多关系链接到)和Persons(以多对多关系链接到) . 我想要该工具做的就是根据这些说明移动数据。ProjectsWorkedWithPersonsPersons

我真的不在乎这个工具是否是某些 DBMS 的一部分,或者只是与纯文本 (CSV) 文件一起使用——而不涉及任何特定的数据库。我在 MS Access 2010 中尝试过表分析器,但除非我错过了什么,否则它无法解决这个特定任务。(不过,它在更简单的情况下也能完美运行。)

注意:我熟悉规范化;我不想学习任何东西——只是想节省自己的时间。我也理解为什么不存在用于数据库规范化的通用工具。我希望我的案例如此简单和普遍,以至于可能有一个工具可以处理它。我也不介意学习一个相对复杂的工具。

4

1 回答 1

2

我相信你想要的是一个ETL软件。
据我所知,您需要预先创建目标表,但 ETL 可以将数据从一个数据库(或文件)拆分、重组和加载到另一个。

不过,对于您的目的来说,这可能有点过头了,使用 ETL 软件的学习曲线可能比编写一些 VBA 和一些查询来帮助将数据从一种形式传输到另一种形式要多得多,但如果这是您必须经常做的事情,可能还是值得的。

但是,在您的情况下,我很可能只是创建目标表并在输入表上进行多次传递以一次提取数据,用原始列中的不同数据填充PersonsProjects表,然后重新创建关系在单独的表中。

在 VBA 中进行此类工作时,我发现字典对于跟踪关系非常宝贵。

于 2012-10-28T06:54:24.720 回答