【发布时间】:2015-01-14 22:47:09
【问题描述】:
我有一个需要在 Perl 中阅读的文件(我们称它为 registered_students.txt)。该文件每行都有数据,因此需要参考其他文件以获取更多信息。
例如,主数据库将具有名称和地址。但是根据每个人的国籍,我必须参考其他文件(按国家排序)才能找到匹配的姓名、国籍和家庭住址。
假设我有 100 个 name_of_country.txt 文件,并且我的 registered_students.txt 中有 10,000 行。我的问题是:
- 我是否阅读了 registered_students.txt 中的每一行并逐个解析其他 100 个文件以找到匹配项?这似乎是一种处理这些数据的糟糕方式。有没有更快的方法来做到这一点?
- 我可以在并行模式(多线程)下执行这个过程吗?
谢谢, 汉斯
【问题讨论】:
-
“这似乎是一种处理这些数据的糟糕方式。” 是的。 “有更快的方法吗?” 使用数据库而不是纯文本文件。
-
原始数据仅以txt文件的形式提供,要求仅使用perl。
-
看看
DBD::SQLite。它是独立的(您不必安装单独的数据库服务器),并且可能比您自己破解的任何东西都要快得多。当然,您必须先将初始数据集加载到数据库中……这些文本文件是否经常更改? -
如果您的文件是 CSV 格式,您可以使用 DBD::CSV。否则,按照其他人的建议,在处理之前执行相同的操作并将文件导入 SQLite 表,或者至少导入 CSV 文件。
-
显示来自不同文件的一些示例行;你在问什么并不完全清楚。另外,您谈到阅读文件;你想用这些信息做什么?如果输出到文件,也显示一个示例
标签: multithreading perl