有个超过 256 列的 csv 表,大概在 800 多列,10w 行 另外有一张表,要匹配上面这个表中的部分字段,然后找出关键字对应的值,类似于 vlookup 这种功能 现在的情况是,通过 vlookup 也能找,但是花费的时间比较长,放到数据库里,光导入的时间就不是一点半点的 请教一下大家有没有什么好的办法?
有个超过 256 列的 csv 表,大概在 800 多列,10w 行 另外有一张表,要匹配上面这个表中的部分字段,然后找出关键字对应的值,类似于 vlookup 这种功能 现在的情况是,通过 vlookup 也能找,但是花费的时间比较长,放到数据库里,光导入的时间就不是一点半点的 请教一下大家有没有什么好的办法?
|
binuxMay 10, 2018
1
你排序了吗?
|
|
madNealMay 10, 2018
2
能不能希望查询的字段抽出来,写到本地 json 文件中,并且保存和 csv 的映射关系,这样找是不是会快一点。
|
|
AX5NMay 10, 2018
3
能预处理转换成别的数据结构的话,那倒是有很多办法。不过估计跟直接导入数据库也差不多。
|
|
iceheartMay 10, 2018 via Android
4
把小表读到内存里,对你要匹配的列建索引(就是建几个 map)。然后遍历大表,先匹配你的查找范围,再从小表的索引里查。
应该用不上多少行代码 |
|
BoyizmenMay 10, 2018 via Android
5
excel 功能挺强大的不知道转成 excel 格式来处理能不能满足你的需求
|
|
zk123May 10, 2018 via Android
6
用 ketttle
|
|
hrongMay 10, 2018 via Android
7
赞同小表方案。
另外,找找有没有可以高速探索 csv 的库,游标打开后前后移动的那种,这样从真实 csv 取数据不失性能也比较方便。 |
|
dounMay 10, 2018 via Android
8
10W 行很大?导数据库不是随便折腾吗?或者 power query 了解一下
|
|
liuzhaowei55May 10, 2018 via iPhone
9
能否确定需要的列?在本地预处理 csv 文件,然后再上传
|
|
df4VWMay 10, 2018
10
10w 行导入,考虑到比较长,就算个 2 分钟吧
|
|
McooLewisMay 10, 2018 via Android
11
全倒进数据库不随便折腾?才多少东西啊导入就要好长时间。
|
|
12
https://github.com/BurntSushi/xsv 知道有个这个工具,但是没用过,可以看看能不能满足。
|
|
mengzxMay 10, 2018 via Android
13
excel 处理这点数据还是没问题的,不需要导入数据库,如果电脑性能差点可以考虑 excel 的 powerquery 处理
|
|
TimePPTMay 10, 2018 via iPhone
14
https://github.com/dinedal/textql
TextQL Allows you to easily execute SQL against structured text like CSV or TSV. 另,Python 的话用 pandas 直接处理 csv 也很方便,就别导入数据库了 |
|
urmyfaithMay 10, 2018
15
python 貌似很方便
|
|
mmd1989May 10, 2018
16
10W 行 EXCEL 就搞得定,用 index 配合两个 meach 函数,一定要用 lookup 的话用 lookup 函数,先排序再判断,Vlookup 的效率低很多
|
|
wqzjk393May 10, 2018 via iPhone
17
导数据库里吧,csv 比 xslx 这些都快,我导三四百 m 的 csv 到 access 都很快了
|
|
Vanquish5419May 10, 2018
18
才 10w 行,用 pandas 吧,pd.read_csv,简单粗暴
|
|
abusizhishenMay 10, 2018 via Android
19
7 秒导入 200w 行 load data infile 了解一下
|
|
expkzbMay 10, 2018
20
用工具将 csv 转成 sqlite 不会花多久的
|
|
super452May 10, 2018
21
pandas 了解一下?
|
|
ourzhangMay 10, 2018
22
外部表。。。
|
|
caryqyMay 10, 2018
24
awk + grep 呢
|
|
25
10w 行的表,awk 如果写得高效,跑起来飞快。
还能多进程并行! 在几十个核心的服务器上跑个几秒就解决了。 |
|
HopetreeMay 10, 2018
26
数据的东西交给 pandas
|
|
a132811May 10, 2018
27
才 10w 行,800 列,也没有多少数据嘛。
简单的匹配 grep, awk。复杂点的匹配,就 python 等处理,很方便的啊。 刚 python3 写了一个, 10 多行的事情: wget https://ahui132.github.io/bin/grepcolumn chmod u+x grepcolumn echo 'name=Jack,gender=male,job=coder' | grepcolumn - 'job,name' echo 'Jack,male,coder' | grepcolumn - 'job,name' -c 'name,gender,job' echo 'Jack||male||coder' | grepcolumn - 'job,name' -c 'name,gender,job' -d '||' |
|
annielongMay 10, 2018
28
看字段内容吧,如果是一般的字段,还是导入数据库方便,我曾处理过一次复杂文本的 csv,字段用逗号隔开,但是某个字段是富文本,里面一大堆换行 和逗号,不知道为什么用 Excel 引擎导入只能处理一部分,最后还是写个软件 处理后批量插入数据库
|
|
a132811May 10, 2018
29
csv 的话 pands 最方便:
dataFrame = pandas.read_csv("./marks.csv", sep=",") dataFrame = pandas.read_table("./marks.csv", sep=",") |
|
zynlpMay 10, 2018 via iPhone
30
spss 了解一下?
|
|
zhangsen1992May 10, 2018
31
数据库操作
|
|
HzzoneMay 10, 2018
32
像是中软杯(滑稽)
|
|
LaFayetteMay 10, 2018
33
10W 多行不算大,pandas 就可以处理
|
|
guyskk0x0May 11, 2018 via Android
35
试试 apache drill,先把 csv 里需要的字段抽出来
|
|
xiaohanqingMay 12, 2018 via Android
36
MySQL,loadCSV,6 百万行也是几分钟的事
|