批量插入到舞台表后,将数据移动到生产表

时间:2015-08-13 09:37:33

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

我有一个数据库标准化,如下图所示。我存储每个帐户的客户,帐户和邮政地址。您可以注意到,客户端 - 帐户关系类型是多对多的,ClientAccount表也是如此。

normalized tables

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

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

PS:该数据库用于启用EF的ASP .Net网站。

1 个答案:

答案 0 :(得分:0)

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

地址 - >帐户 - >客户 - > 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. 客户帐户     Inser Into ClientAccount(accountId,clientId)     从temp t中选择a.accountId,c.clientId     内部加入客户端c在c.name = t.name和c.client_number = t.client_number上     内部加入帐户a a.account_number = t.account_number

  5. 确保:

    • 如果某些数据已存在,则不会创建副本
    • 匹配右栏上实际和临时表之间的行