1

我不知道如何问这个问题,所以如果我没有使用适当的术语等,请指引我正确的方向,但我可以解释我目前在做什么。我想知道是否有比我目前使用的方法更简单的方法来更新数据库中的内容。(我正在使用 SQL Server 2008 顺便说一句。)

我有一堆 CSV 文件,我用来提供给我的客户,作为更新导入数据库的内容的一种方式(因为内容很大)。导入通过运行我编写的 python 脚本来工作,该脚本使用 Jinja2 模板,该模板生成将 CSV 内容插入数据库所需的 SQL 文件(如果它是从头开始的场景)。这工作正常。现在谈到数据迁移(我需要将数据库中存在的数据迁移到新版本)我有很多手动工作(我在模板中手动编码,没有SQL命令或自动生成我可以运行来为我执行此操作的代码)来执行。

假设我有一个 CSV 文件中的医院列表,并且我已经在数据库中有一组医院(从 CSV 文件的先前版本导入)。我创建了 Hospitals 表的副本(没有数据)并将其命名为 HospitalsTemp。新的 CSV 医院被插入到 HospitalsTemp 表中(至少该部分是通过模板生成的)。Hospitals 表现在与它的所有外键和约束分离。现在我遍历医院周围的所有表格(再次手动!)并将指向旧医院 ID 的医院 ID 替换为新医院 ID(因为我可以根据医院代码从医院查找到医院临时以确保参照完整性被保留)。

我希望我解释得足够好,让每个人都能理解。我真的希望有一种更简单的方法来做到这一点。

4

1 回答 1

0

你怎么知道哪家医院变成了哪家医院,名字保持不变吗?有没有保持不变的 ID?

你看过 SSIS 和渐变维度组件吗?您可以使用它来更新现有行并添加新行:http: //blogs.msdn.com/b/karang/archive/2010/09/29/slowly-sharing-dimension-using-ssis.aspx

SSIS 也是一个很好的导入工具,因为它可以很好地处理读取 CSV 文件。

您可以用简单的 SSIS 包替换当前逻辑,该包只是一个平面文件数据源和 SCD 向导的输出。

于 2013-10-08T08:33:15.103 回答