【问题标题】:Importing CSV into MySQL and将 CSV 导入 MySQL 和
【发布时间】:2017-02-04 22:16:02
【问题描述】:

我对使用 MySQL 非常陌生,但我的任务是创建一个数据库来保存大量客户端数据。

我遇到的最大问题是规范化以及如何导入数据以确保其符合规范化规则。显然,我可以把所有东西都放在一张大桌子上,并希望得到最好的结果,但从我读过的任何东西来看,它都会在未来造成相当大的问题。

我应该如何着手导入采用以下形式的数据(不是实际数据,但形式将是相同的,只是更多的行和更多的列)

Unique Reg Num |Promotion  |Advert  |Characteristics
---------------|-----------|--------|----------------
123            |20% Off    |Aug 15  |Green;Blue;Purple
124            |10% Off    |Sep 14  |Purple;Red;Green
125            |20% Off    |Aug 15  |Green;Blue;Purple
126            |10% Off    |Sep 14  |Purple;Red;Green

所以 Promotion 和 Advert 列应该被规范化并且有单独的表(我认为这是多对一的关系)链接回 Unique Reg Num 但是主要问题是如何对特性列进行排序. (如果需要其他问题,我会设置单独的线程)

我有几个列,例如带有分隔数据的特征列。我应该如何将它上传到数据库,以便可以使用这些列查询数据?

我可以扩展每个分隔数据的行,这将为 Unique Reg Num 123 提供 3 行数据(仅使用上面的示例表)。但是,如果我有另一个具有多个特征的列,例如 3 个国家(德国;法国;意大利),那么 Unique Reg Num 123 的行数将增加三倍至 9 行。

除了创建一个大表之外,我真的不知道如何着手解决这个问题。

我正在使用 MySQL 6.3 和 MySQL Workbench。目前在 Win 7 中设置用于测试,但将在 Windows Server 2012 上设置实际数据库。

如果我遗漏了任何相关信息,请告诉我,我会更新问题。

提前致谢

【问题讨论】:

  • 您的Characteristics 数据是非标准化数据的缩影。您应该尝试获取不是 CSV 格式的数据。现在多做一点工作,以后会有回报的。
  • 嗨蒂姆,感谢您的反馈。你能稍微扩展一下吗?我完全符合你的想法,例如现在做更多的工作,这样我就有了一些长期有效的东西。我应该如何收集这些数据,以便更有益/更容易使用?
  • 而不是Green;Blue;Purple 在一行中,您应该有三个 记录,每种颜色出现在一个记录上。即使这样也不理想,但这是一个开始。
  • 谢谢@Tim。如果我再添加另一个特征列,例如 characteristic_2,其中包含 3 个国家 Germany; France; Belgium。这意味着我的扩展数据将有 9 行而不是 3 行被上传。这是最佳实践吗?从这里我需要规范化(我不确定),但会打开另一个线程来问这个问题。
  • 避免在表格中使用 CSV。您在上面给出的每条记录应该是 3 条记录。是的,您还有其他规范化问题,但这个问题更大。

标签: mysql database csv import mysql-workbench


【解决方案1】:

这是您的数据理想的样子。我会将您的示例表分成两张表,一张用于促销信息,另一张用于特征:

促销

Unique Reg Num |Promotion  |Advert
---------------|-----------|--------
123            |20% Off    |Aug 15
124            |10% Off    |Sep 14
125            |20% Off    |Aug 15
126            |10% Off    |Sep 14

特点

Unique Reg Num |Characteristic
---------------|----------------
123            | Green
123            | Blue
123            | Purple
124            | Purple
124            | Red
124            | Green
125            | Green
125            | Blue
125            | Purple
126            | Purple
126            | Red
126            | Green

这些表已相当规范化,可能足以满足您的用例。您面临的挑战是摆脱 CSV 数据。

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 2012-02-21
    • 1970-01-01
    相关资源
    最近更新 更多