代码之家  ›  专栏  ›  技术社区  ›  Jason Swett

快速可靠地将数据插入到单独的表中

  •  1
  • Jason Swett  · 技术社区  · 14 年前

    假设我们从CSV文件中获取以下数据:

    account_number balance customer name
    100            500.00  GERN BLANSTON
    101            800.00  GERN BLANSTON
    102            200.00  OPRAH WINFREY
    

    这代表了两个属于格恩·布兰斯顿的账户和一个属于奥普拉·温弗瑞的账户。现在假设我们有一个 customer 桌子和 account 桌子。我们可以假设只使用两个 INSERT 声明:

    INSERT INTO customer
      (name)
    VALUES
      ('GERN BLANSTON'),
      ('OPRAH WINFREY')
    

    INSERT INTO account
      (account_number, balance, customer_id)
    VALUES
      (100, 500.00, ???),
      (101, 800.00, ???),
      (102, 200.00, ???)
    

    如果我们知道格恩·布兰斯顿和奥普拉·温弗瑞的身份证,我们当然可以在第二天使用这些身份证 插入 声明和它将工作良好。但不管怎样,我们得弄到那些身份证。

    我的问题是:有没有一种快速的方法来发现,或者至少跟踪每个插入的客户的ID?分别插入每一行,然后获取 LAST_INSERT_ID() 对我来说太慢了(每个CSV文件中最多有65000个帐户)。每次我插入新帐户时查找客户ID也太慢。

    或者,如果你想回避这个问题并推荐一个不同的解决方案,我也愿意接受。我在用MySQL。

    1 回复  |  直到 14 年前
        1
  •  0
  •   ajreal    14 年前

    为表添加另一列 account ,哪个商店 customer_name ,完成插入后 update account set customer_id=(select customer.customer_id from customer where customer.customer_name=account.customer_name;

    希望这种替代方法简化了复杂性。

    另外,改变你的 customer table 自动递增 customer_id