【问题标题】:Move data to production tables after Bulk Insert to stage table在批量插入到暂存表后将数据移动到生产表
【发布时间】:2015-08-13 09:37:32
【问题描述】:

我有一个标准化的数据库,如下图所示。我存储每个帐户的客户、帐户和邮政地址。如您所见,Client-Account 关系类型是多对多的,针对 ClientAccount 表。

由于我有一个包含 100k 帐户记录的数据库,因此我正在考虑使用 SQL 批量复制。我认为我可以使用一个包含上述表格所有字段的阶段表,然后对数据进行规范化。

我的问题是我不知道如何将数据移动到生产表中。批量插入导入后,如何创建存储过程来执行此作业?

PS:该数据库是作为启用了 EF 的 ASP .Net 网站使用的。

【问题讨论】:

    标签: asp.net sql-server database entity-framework


    【解决方案1】:

    您必须以正确的顺序一次插入一张表

    地址 -> 账户 -> 客户 -> AccountClient

    1. 创建地址:

      Insert into Address(data)
      Select distinct address_data From temp
      
    2. 帐户

      Inser Into Account(account_number, address_id)
      Select t.account_number, a.id From temp t
      Inner Join Address a on a.data = t.address_data
      
    3. 客户

      Insert into Client(name, client_number)
      Select distinctname, client_number From temp
      
    4. 客户帐户 插入 ClientAccount(accountId, clientId) Select a.accountId, c.clientId From temp t 在 c.name = t.name 和 c.client_number = t.client_number 上的内部加入客户端 c a.account_number= t.account_number 上的内部加入帐户 a

    确保:

    • 如果某些数据已经存在,则不要创建重复项
    • 您匹配右侧列中真实表和临时表之间的行

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-21
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多