【问题标题】:How to deal with "too many columns" in mysql如何处理mysql中的“太多列”
【发布时间】:2013-04-09 17:40:46
【问题描述】:

我在一个制表符分隔的文件中有 1800 列和大约 400 万行。我正在尝试将其加载为 mysql 关系。 Mysql 给我ERROR 1117 (HY0000): Too many columns。 我在网上查了一下,发现 MySQL 无法处理这么大的数据,有人建议将表垂直分区。

我正在寻找的是有关如何对此进行分区以及如何对分区表执行选择查询的示例。

谢谢

【问题讨论】:

  • 如果你有 1800 列,你可能想要标准化一点。
  • 1800 列是相当...疯狂。
  • 为什么需要这么多列?你能描述一下这些列是什么吗?
  • 我会拨打 1-800-NORMALIZE
  • @user1140126 - 即使您需要所有这些数据,您也不必将它们保存为单个表的列。例如,如果其中一些字段代表测试结果,您可以创建tests 表并将它们全部放在那里。你可以更进一步,将tests拆分成test_typestest_results,以此类推。

标签: mysql sql partitioning bigdata


【解决方案1】:

您可以拥有任意数量的表来定义单个关系。由于几个原因(性能、安全性),它也被认为是可接受的做法。

您只需要拆分 csv 文件并保持表与相同的主键链接。

要拆分 csv 文件,您可以轻松使用 cut(希望没有大小限制):

cut -d"," -f1-1000 patients.csv > cols1000.csv
cut -d"," -f1001-1800 patients.csv > cols1800.csv

当然,如果您愿意,您可以拆分更多。对于表格,我知道您已经知道如何导入。只需在两个表中使用 auto_increment pkey 即可保持关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2011-02-14
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多