有个处理 csv 的问题,想了好几个晚上,都没有办法解决,请教各位

2018-05-10 06:27:54 +08:00
 kavana

有个超过 256 列的 csv 表,大概在 800 多列,10w 行 另外有一张表,要匹配上面这个表中的部分字段,然后找出关键字对应的值,类似于 vlookup 这种功能 现在的情况是,通过 vlookup 也能找,但是花费的时间比较长,放到数据库里,光导入的时间就不是一点半点的 请教一下大家有没有什么好的办法?

5470 次点击
所在节点    Python
36 条回复
binux
2018-05-10 06:32:39 +08:00
你排序了吗?
madNeal
2018-05-10 06:48:10 +08:00
能不能希望查询的字段抽出来,写到本地 json 文件中,并且保存和 csv 的映射关系,这样找是不是会快一点。
AX5N
2018-05-10 07:23:14 +08:00
能预处理转换成别的数据结构的话,那倒是有很多办法。不过估计跟直接导入数据库也差不多。
iceheart
2018-05-10 07:29:42 +08:00
把小表读到内存里,对你要匹配的列建索引(就是建几个 map)。然后遍历大表,先匹配你的查找范围,再从小表的索引里查。
应该用不上多少行代码
Boyizmen
2018-05-10 07:38:27 +08:00
excel 功能挺强大的不知道转成 excel 格式来处理能不能满足你的需求
zk123
2018-05-10 07:38:38 +08:00
用 ketttle
hrong
2018-05-10 07:51:51 +08:00
赞同小表方案。

另外,找找有没有可以高速探索 csv 的库,游标打开后前后移动的那种,这样从真实 csv 取数据不失性能也比较方便。
doun
2018-05-10 07:53:30 +08:00
10W 行很大?导数据库不是随便折腾吗?或者 power query 了解一下
liuzhaowei55
2018-05-10 07:54:58 +08:00
能否确定需要的列?在本地预处理 csv 文件,然后再上传
df4VW
2018-05-10 08:03:49 +08:00
10w 行导入,考虑到比较长,就算个 2 分钟吧
McooLewis
2018-05-10 08:06:03 +08:00
全倒进数据库不随便折腾?才多少东西啊导入就要好长时间。
SErHo
2018-05-10 08:24:52 +08:00
https://github.com/BurntSushi/xsv 知道有个这个工具,但是没用过,可以看看能不能满足。
mengzx
2018-05-10 08:28:42 +08:00
excel 处理这点数据还是没问题的,不需要导入数据库,如果电脑性能差点可以考虑 excel 的 powerquery 处理
TimePPT
2018-05-10 08:36:43 +08:00
https://github.com/dinedal/textql
TextQL
Allows you to easily execute SQL against structured text like CSV or TSV.

另,Python 的话用 pandas 直接处理 csv 也很方便,就别导入数据库了
urmyfaith
2018-05-10 09:00:27 +08:00
python 貌似很方便
mmd1989
2018-05-10 09:14:38 +08:00
10W 行 EXCEL 就搞得定,用 index 配合两个 meach 函数,一定要用 lookup 的话用 lookup 函数,先排序再判断,Vlookup 的效率低很多
wqzjk393
2018-05-10 09:14:48 +08:00
导数据库里吧,csv 比 xslx 这些都快,我导三四百 m 的 csv 到 access 都很快了
zhucegeqiu
2018-05-10 09:22:29 +08:00
才 10w 行,用 pandas 吧,pd.read_csv,简单粗暴
abusizhishen
2018-05-10 09:26:10 +08:00
7 秒导入 200w 行 load data infile 了解一下
expkzb
2018-05-10 09:32:28 +08:00
用工具将 csv 转成 sqlite 不会花多久的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/453628

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX