C# 在Microsoft Sql Server数据库中将信息从平面表传播到规范化表的快速方法
因此,我们面临着这些问题,我们正努力尽可能有效地解决这些问题:C# 在Microsoft Sql Server数据库中将信息从平面表传播到规范化表的快速方法,c#,sql-server,database,bulkinsert,C#,Sql Server,Database,Bulkinsert,因此,我们面临着这些问题,我们正努力尽可能有效地解决这些问题: 从excel文件导入数据(130+k行) 将其加载到Sql Server数据库的给定表中 将该表中的数据分散(标准化)到其他6个表中 到目前为止,我们已经设法解决了前两个问题。 我们借助Excel数据读取器库访问文件中的数据,绑定并批量插入加载的数据 使用EntityFramework.BulkInsert。到目前为止,该过程所需时间不到2分钟,仅略多于130k行,这是可以接受的。 当我们试图规范化服务器上加载的表中的数据时,就会出
我们借助Excel数据读取器库访问文件中的数据,绑定并批量插入加载的数据 使用EntityFramework.BulkInsert。到目前为止,该过程所需时间不到2分钟,仅略多于130k行,这是可以接受的。 当我们试图规范化服务器上加载的表中的数据时,就会出现大问题。
数据库包含以前的信息,在更改过程中必须可以运行=>无表锁定。
表有130列,包含分散在6个表中的信息。主记录保存其他5个的外键。
数据库中可能已经存在或不存在其他记录。如果存在,则更新缺失的信息。
对于我们来说,棘手的部分是在插入主实体时知道子实体的ID。逐行插入可以解决问题,但需要花费太多时间。
我们希望使用某种大容量插入,但不确定如何保持记录之间的连接。 数据库设计是遗留的,不能对其进行重新组织。:) 欢迎就这一问题提出任何工具、方法或建议:)
提前感谢。什么标准化水平?不低于第三标准形式。不适用于EF。ORM完全不适合ETL作业。ETL不过是纯粹的数据操作。将数据加载到暂存表中,然后执行查询以读取所需的数据并将其插入到目标表中。或者使用SSI从源读取数据并动态操作数据流,例如使用“多播”步骤将一行发送到多个表,只存储每个表中所需的列。可以使用“查找”步骤执行键查找什么版本的SQL Server?如果您可以尝试SQL Server 2008 R2