最好的方式来处理一个大的CSV文件快速过滤,排序和提取(在内存中?)

7gs2gvoe  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(37)

我有一个遗留的静态csv,大约有100万条记录,1gb大小,每行大约有300个字段。
一些字段是非规范化的一对多关系,如每个订单Category_1, Category_2, Category_3,...,Category_20等。然而,类别字段的数量可以是最大20个,如果类别少于20个,则为空,或者如果类别多于20个,则省略额外的类别。字段值可以是"DX001 - Dairy""CX002 - Cosmetics"现在类别的顺序不是固定的。所以DX001可以在N个类别(Category_1, Category_2, Category_3, Category_N)字段中的任何一个。
Amount还有另一个字段,以美元为单位。如$1,256.25
现在我需要做的事情,如搜索所有订单的类别与“DX 001”或“CX 002”与金额> 1000美元,并按金额排序,然后导出数据与这些记录到CSV,以提供给用户通过Web界面。
什么技术堆栈最适合快速处理的解决方案(几秒钟的时间来处理查询并使CSV可用)以合理的成本?就我个人而言,我已经在一个巨大的规模和使用elasticsearch作为我的数据源的项目与TB的数据.但我个人认为这将是太昂贵,以及矫枉过正这个用例.或者我需要导入到一个传统的数据库?可以使用Python在内存中完成吗?因为我熟悉Python,但如果有可用的解决方案,也可以采用任何其他语言。将感谢一些帮助。
附言:我看了pandas,但是我不知道如何通过搜索N个字段中的每个字段来查询类别列表。所以如果你知道如何在pandas中解决这个问题,请告诉我!
谢谢你,谢谢

arknldoa

arknldoa1#

看起来最好的和最简单的解决方案是DuckDB(进程内SQL OLAP数据库管理系统)
它有一个强大的CSV解析器,可以检测大量的拨号,文件格式,列类型和more,然后你可以在SQL中处理数据库/表,甚至在普通桌面计算机上处理数百万行/千兆字节。你可以使用Python API或导入Pandas框架

相关问题