在Microsoft Sql Server数据库中将信息从平面表传播到规范化表的快速方法

时间:2016-03-31 13:05:23

标签: c# sql-server database bulkinsert

所以我们正面临着这些问题,我们正试图尽可能有效地解决这些问题:

  1. 从excel文件导入数据(130 + k行)
  2. 将其加载到Sql Server数据库的给定表中
  3. 将该表中的数据分散(规范化)为其他6个
  4. 到目前为止,我们已成功应对前两个问题 我们借助Excel Data Reader库从文件中访问数据,绑定并批量插入加载的数据 使用EntityFramework.BulkInsert。到目前为止,这个过程花费不到2分钟,行数超过130k,这是可以接受的。 当我们尝试规范化服务器上​​加载的表中的数据时,会出现一个大问题 数据库包含以前的信息,并且必须在更改期间运行=>没有桌子锁定。
    表有130列,包含分散在6个表中的信息。主记录保留其他5的外键。
    其他记录可能已存在,也可能未存在于数据库中。如果他们在场,则缺失信息会更新 对我们来说棘手的部分是在插入主实体时知道子实体的ID。逐行插入可以解决问题,但需要花费太多时间 我们想使用某种批量插入,但我们不确定如何保持记录之间的连接。 数据库设计是遗留的,重新组织它不是一种选择。 :)

    欢迎任何有关此事的工具,方法或建议的想法:)

    提前致谢。

0 个答案:

没有答案