在MySQL中存储CSV文件的最佳方式 - Blob还是Text?

3

标题已经说明了大部分内容。

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

是以二进制形式存储在Blob字段中还是以文本形式存储在文本字段中;

我已经搜索了一段时间,但大多数文章都是关于如何将实际数据导入表格,而不是将文件或其内容存储在字段中。


二进制可能更紧凑一些(以某种程度)。另外,你考虑过在这里使用NoSQL解决方案,比如Mongo,它可能更适合存储文档吗? - undefined
我实际上需要这些文件存储在我的MySQL数据库中,但还是谢谢你的建议。同时也感谢你提供的关于blob的建议。 - undefined
我不认为你会找到一个单一的“正确”答案,但是...只是好奇为什么你想把这样的内容存储在数据库中,而不是存储在其他地方,比如网络共享、云存储等,然后只在数据库中存储数据的URI。对于在数据库中存储非元数据的“二进制”内容来说,并没有太多的理由(如果它不用于搜索,那只会增加数据库的负担)。 - undefined
将这些文件存储在数据库中有合理的原因。它们遵循事务隔离和回滚。此外,您的数据库备份将包括所有CSV文件,并支持快照,以便获得一致的备份。如果您将CSV文件存储在数据库之外,这些功能是不可能实现的。 - undefined
大多数情况下,基于回滚的原因,我需要文件与引用它的数据保持一致。 - undefined
1个回答

2
根据您提供的信息,目前没有明确的答案。
如果使用TEXT,您的CSV内容必须根据列的字符集存储有效字符。例如,如果以UTF8格式存储,但CSV数据包含一些SMP编码(例如表情符号),它们可能会被损坏或插入失败。
而BLOB将按字节保真存储,但您将无法使用UTF8排序规则搜索数据。

我其实不需要搜索数据,我相信我会选择BLOB,因为这样可能会给我带来更少的麻烦。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接