我有一列数据要添加到 mysql 数据库表中。该列是原始文本,最长的一段文本包含大约 300,000 个字符。是否可以将其存储在表中?如何?
我一直在阅读,即使 LONGTEXT 列也有所限制。
大概您已经排除了将这些文本项存储在文件中并将它们的路径名存储在表中的替代方法。如果您还没有考虑过该选择,请考虑。这通常是处理此类应用程序最实用的方法。如果您使用 Web 服务器将信息传递给用户,则尤其如此:通过将这些对象放在文件系统中,您可以避免非常严重的生产瓶颈(从 DBMS 获取对象,然后将它们发送给用户)。
MySQL 的 LOB(大对象)将占用 300k 个字符而不会出现问题。MEDIUMTEXT 处理 16 兆字节。但是,将这些对象加载到 DBMS 并再次将它们取出所需的编程工作可能有点挑战性。你还没有提到你的应用程序堆栈,所以很难给你具体的建议。从哪儿开始?阅读有关 MySQL 服务器参数的信息max_allowed_packet
。
如果这是我的项目,并且由于某种原因无法使用文件系统,我会将大型文本文章存储为较短行中的段。例如,而不是
textid textval
(int) (MEDIUMTEXT)
number lots and lots and lots of text.
我会做一个这样的表:
textid segmentid textval
(int) (int) (VARCHAR(250))
number 1 Lots and
number 2 lots and
number 3 lots of
number 4 text.
每个段的长度应该大约为 250 个字符。如果可以的话,我认为你会很聪明地打破单词边界上的片段;它将使 FULLTEXT 搜索之类的东西更容易。这将为您的大文本项目带来许多较短的行,但这将使您的编程、备份以及有关您的系统的所有其他内容。周围更容易处理。
有一个前期成本,但它可能是值得的。