【发布时间】:2020-08-19 18:41:56
【问题描述】:
我有一个包含大约 20 列数据和大约 11K 记录的源平面文件。每条记录(行)包含诸如
之类的信息patientID、PatietnSSN.PatientDOB、PatientSex、PatientName、Patientaddress、PatientPhone、PatientWorkPhone、PatientProvider、PatientReferrer、PatientPrimaryInsurance、PatientInsurancePolicyID。
我的目标是将这些数据移动到 sql 数据库中。
我已经使用以下数据模型创建了一个数据库
我知道要进行批量插入以移动所有记录,但是我不确定如何执行此操作,因为您可以看到存在并且必须限制以确保引用完整性。我的方法应该是什么?我做错了吗?到目前为止,我已经使用 SSIS 将数据导入到单个临时表中,现在我必须弄清楚如何将 11k 多条记录写入它们所属的各个表中......所以临时表的记录 1 将创建 1 条记录在几乎所有表格中减去可能存在一对多关系的表格,例如“提供者”和“推荐人”,因为一个提供者将与许多患者相关联,但一名患者只能有一个提供者。
我希望我已经解释得足够好。请帮忙!
【问题讨论】:
-
考虑查看 SQLServer 中的存储过程/函数支持。您也许可以编写一些程序,例如插入一条主记录,返回 id,然后插入引用该返回 ID 的相关记录。
-
除非你真的需要它,否则我会删除 appt/providers 引用——循环依赖会给你带来额外的工作。另外,您将使用什么工具来更新数据库?原始 SQL 还是编程语言?如果建模正确,许多 ORM 会为您解决这个问题。如果有人要求我这样做,我会用 Python 编写脚本,或者使用诸如 expressor 之类的 ETL 工具。
-
@ed Orsi 不会像 SSIS 包那样违反约束,因为它不会按任何特定顺序进行插入,所以我无法控制第一秒写入的记录等等...... ?
-
@SteveJ 在我们发言时,我正在研究您对 ORM 的建议……我完全是关于对我有用的工具! :-)
-
@JoseFreyre;如果你没有最喜欢的语言,我认为 Python 和 Pony-Orm 可能会做到。带有实体框架的 C# 也可以——但学习曲线很长。
标签: sql-server ssis foreign-keys data-modeling referential-integrity