CSV到MySQL:单表与多表?

时间:2012-08-20 10:53:57

标签: mysql csv

我有一个包含74列和大约60K行的CSV文件。每月必须将此CSV文件的内容导入MySQL数据库。

插入数据后,最终用户可以使用预定义的过滤器查询MySQL数据库的内容。

将所有内容放在一个表中意味着插入速度更快,但读取速度更慢。拆分多个表中的内容(使用外键)意味着插入速度更慢,读取速度更快,而且我认为失败的可能性更高。

您认为对我来说最好的选择是什么,还是有其他可能性?

2 个答案:

答案 0 :(得分:0)

无需查看列,我几乎可以保证多个表是可行的。

  1. 会减少人为错误
  2. 通过减少冗余,
  3. 作为奖励,任何更新,例如客户地址,都可以在客户的表格中进行一次,而不必更新他们参与的每个订单项。
  4. 您还会注意到插入变得更容易,因为另一个表中涵盖的整行数据可以总结为引用一个外键!
  5. 如果数据库插入时间确实成为一个大问题,那么您可以花一点时间编写一个宏来为您完成。

答案 1 :(得分:0)

如果所有数据关系(总线,客户端和旅行之间)都是1比1且信息在整个CSV中没有重复,那么您可以使用单个表格,原因如下:

  1. 从CVS到数据库的最简单转换,CVS中的每一列都将对应数据库中的一列
  2. 在您确切知道哪些数据在哪里后因为它将“看起来像”CVS而在数据库上工作的任何人
  3. 您主要担心“读慢速”不会是一个大问题,因为当您查询数据库中的信息时,您只需要所需的数据并过滤掉您不需要的列。 (例如SELECT departure, arrival, distance FROM bustrips WHERE distance > 1000)\
  4. 但是,如果您查看数据,并且CVS中存在大量重复,可能来自同一行程中的多个客户端,或者同一总线用于多次行程等。我会为每个唯一数据块创建一个新表。我可能已经看到的一个例子是公共汽车的新表:

    Bus_ID;
    Numberplate;
    Handicap;
    Odometer reading;
    

    我希望这有助于您做出决定。它不是关于“易读”与“易写”关于通过减少冗余来提高信息清晰度。