【发布时间】:2023-03-08 12:56:02
【问题描述】:
我有几十万个非常标准形状的 txt 文件(它们都有共同的元素 - ID、日期、收件人、发件人、主题、正文。
这些不是结构化格式,例如多部分电子邮件。
我想将它们剥离成它们的组成部分,并将整个部分输入数据库。它们有很多,所以我想确保这种方法有效。
我正在思考许多关键问题(我不是程序员——这是学习/爱好的东西)。
1) 是否有我可以强制转换的结构数据类型以合理的方式将这些位保持在一起。我认为有一个 file.ID、file.Date 等以结构化方式保存整个文件的 tryp 交易是合乎逻辑的,因此以后可以将其引入数据库。这是蟒蛇吗?还是我修补 Matlab 后的宿醉?
2) 正文部分可以是几 kb 大或一个句子。 (1)作为一个 blob 是否更好 - 我会放弃搜索 - 这样做的意义..和(2)如何确保我可以在我的 MYSQL 数据库中构建一个足够大的字段来获取时间?我不知道每个元素的最长大小是多少,除非我在消息拆分器中运行某种计数器来处理每条消息看到的最大值
3) 我想我会从步行开始,从步行中获取文件列表,然后逐行提取每个文件。我将使用行位置来推断一些已知位置(ID、日期),然后使用一些 RegEx 或基于特征的模式来拆分其余部分。拆分文件后,我计划摄取它们。但是,我想知道在每条消息的末尾连接到数据库并将这些部分一个一个转储到自己的记录中是否更合乎逻辑。
时间没有戏剧性,它可以持续一个星期来处理所有重要的事情。我在 i7 上大约有 8gb 的 RAM,所以我又不是特别渴望资源,很高兴让它通过它。
这听起来合乎逻辑吗?我错过了核心步骤吗?
谢谢。
【问题讨论】:
-
使用 unix cat 之类的实用程序合并文件是一个想法吗?您可以合并所有格式完全相同的文件,根据您的数据格式,也许使用 MySQL 的 LOAD DATA INFILE 将它们高速读入数据库。
-
也许...我必须四处挖掘以弄清楚这意味着什么 - 我在这里说的是几百 GB 的文本,而目前对象中没有结构。我最初写了一些东西来将它们拆分成单个事件文件,希望能够更容易地处理它们。要使用 LOAD DATA 无论如何我都需要处理它们,因为 MYSQL 将无法处理分段。
标签: python mysql text structure split