我有一个源平面文件,大约有20列数据,大约有11K记录。每条记录(行)都包含诸如
之类的信息patientID,PatietnSSN.PatientDOB,PatientSex,PatientName,Patientaddress,PatientPhone,PatientWorkPhone,PatientProvider,PatientReferrer,PatientPrimaryInsurance,PatientInsurancePolicyID。
我的目标是将此数据移至sql数据库。
我使用以下数据模型创建了一个数据库
我知道想要进行批量插入以移动所有记录但是我不确定如何做到这一点,因为您可以看到存在并且必须是约束以确保参照完整性。我的方法应该是什么?我错了吗?到目前为止,我已经使用SSIS将数据导入到一个临时表中,现在我必须弄清楚如何将11k plus记录写入它们所属的各个表中......因此,登台表的记录1将创建1条记录在几乎所有的表格中减去可能存在1个到多个关系的那些表格,例如“提供者”和“推荐者”作为一个提供者将链接到许多患者,但是一个患者只能有一个提供者。
我希望我已经解释得这么好了。请帮忙!
答案 0 :(得分:0)
由于问题是通用的,我也会以通用的方式处理答案 - 试图至少让你问正确的问题。
您的目标是将平面文件数据导入关系数据库。这是一种非常常见的操作,至少是ETL过程的一个子集。因此,您可能希望通过阅读有关ETL的更多内容来开始搜索。
正如我所看到的,你的根本问题是双重问题。首先,您需要插入大量数据。其次,您正在插入关系数据库。
首先从第二个问题开始;并非每次都可以插入所有数据。例如,您有一个与患者保持1:多关系的提供者表。这意味着您必须询问平面表中每个患者行的问题,以确定提供者是否存在或需要创建。此外,您已经播种了ID,这意味着在某些情况下您必须维护您的创建顺序,以便您可以在下一个创建的条目中引用已创建条目的ID。这对您意味着您的努力将比一组简单的SQL插入更复杂。您需要与努力相关的逻辑。有几种方法可以解决这个问题。
这些方法中的每一种都需要您进行一些研究和学习 - 这个论坛无法教您如何使用它们。关于您想要使用哪一个的决定在某种程度上取决于流程的自动化程度。
关于您的第一个问题 - 大数据插入。 SQL具有批量插入docs的功能,但您必须先调整数据。
就个人而言(根据我的评论),我是.Net开发人员。但是考虑到这个任务,我仍然会用Python编写脚本。学习曲线在Python中非常友好,它有许多用于处理文件和数据库的出色工具。 .Net和EF带来了很多开销,相对于你需要知道的开始python没有 - 但这只是我。
希望这有助于您入门。
答案 1 :(得分:0)
对于我打算使用的记录工具(我同意复杂性和学习曲线意见,但对MS产品有亲和力)
1)Azure SQL数据库(数据存储) 2)Visual Studio 2017 CE(ide) 3)C#(郎) 4).net MVC(项目类型) 5)EF 6(orm) 6)恩典(因为我只是人类: - )