【问题标题】:Best way to store CSV File on MySQL - Blob or text?在 MySQL 上存储 CSV 文件的最佳方式 - Blob 还是文本?
【发布时间】:2020-02-11 17:15:56
【问题描述】:

标题说明了大部分内容。

我需要将 CSV 文件存储在我的数据库中,大部分大小将低于 500kb(最大为 2mbs)。我不确定存储它的最佳方式是什么。

在 Blob 字段中作为二进制或文本字段作为文本;

已经搜索了一段时间,但主要是关于如何将实际数据导入表中的文章,而不是文件或字段上的内容。

【问题讨论】:

  • 二进制可能更紧凑(在一定程度上)。另外,您是否考虑过在这里使用 NoSQL 解决方案,例如 Mongo,它可能更适合存储文档?
  • 我实际上需要将文件放在我的 mysql 数据库上,但我感谢您的建议。并感谢您的 blob 建议。
  • 我认为您不会找到任何单一的“正确”答案,但是......只是好奇为什么要将此类内容存储在数据库中,而不是存储在其他地方,例如网络共享、云存储等,然后将 uri 存储到数据库中的数据中。在数据库中存储非元数据“二进制”内容的情况并不多(如果不用于搜索,它只是向您的数据库添加大量内容)。
  • 有正当理由将此类文件存储在数据库中。他们服从事务隔离和回滚。此外,您的数据库备份将包括所有 CSV 文件,并支持快照,因此您可以获得一致的备份。如果您将 CSV 文件存储在数据库之外,这些事情是不可能的。
  • 主要是出于回滚的原因,我需要文件与引用它的数据一致

标签: mysql file csv storage


【解决方案1】:

根据您目前提供的信息,没有明确的答案。

如果您使用 TEXT,您的 CSV 内容将必须根据您的列的字符集存储有效字符。例如,如果您存储为 UTF8,但 CSV 数据包含一些 SMP 编码(例如表情符号),则它们可能已损坏,或者插入可能会失败。

而 BLOB 将忠实地逐字节存储,但您将无法使用 UTF8 排序规则搜索数据。

【讨论】:

  • 我真的不需要搜索数据,我相信我会选择 BLOB,因为它可能会给我带来更少的麻烦
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-23
  • 2017-05-30
  • 1970-01-01
  • 2010-11-24
相关资源
最近更新 更多