1

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

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

将所有内容放在一个表中意味着更快的插入,但更慢的读取。将内容拆分为多个表(使用外键)将意味着更慢的插入、更快的读取以及我认为更高的失败机会。

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

4

2 回答 2

0

如果所有数据关系(巴士、客户和行程之间)都是 1 对 1 的,并且信息没有在整个 CSV 中重复,那么您可以使用单个表,原因如下:

  1. 从 CVS 到数据库的最简单转换,CVS 中的每一列将对应数据库中的一列
  2. 任何在数据库上工作的人都会知道确切的数据在哪里,因为它“看起来像”CVS
  3. 您主要关心的“读取速度较慢”不会是一个大问题,因为当您查询数据库以获取信息时,您只需要您想要的数据并过滤掉您不需要的列。(例如SELECT departure, arrival, distance FROM bustrips WHERE distance > 1000)\

但是,如果您查看数据,并且 CVS 中存在大量重复,可能来自多个客户乘坐同一次旅行,或者同一巴士用于多次旅行等。我会创建每个唯一数据块的新表。我可能已经看到的一个示例是公共汽车的新表:

Bus_ID;
Numberplate;
Handicap;
Odometer reading;

我希望这可以帮助您做出决定。这与“易读”与“易写”无关,而是通过减少冗余来提高信息清晰度。

于 2012-08-20T19:31:15.563 回答
0

不用看你的专栏,我几乎可以保证多表是要走的路。

  1. 它将减少人为错误
  2. 通过减少冗余,
  3. 作为奖励,客户地址的任何更新都可以在客户的表格中进行一次,而不必在他们参与的每个行项目上进行更新。
  4. 您还会注意到插入变得更容易,因为可以将另一个表中涵盖的整行数据总结为引用单个外键!

如果数据库插入时间确实成为一个大问题,您总是可以花一点时间编写一个宏来为您完成。

于 2012-08-20T11:08:36.380 回答