上个月,机缘巧合,拿到一份不知道是什么鬼网站的 5e 数据 和另一个软件的 8e 数据,随便记录下入库的流水账吧。

如果这份数据让你联想到了什么,我只能说:如有雷同,纯属巧合。

部分关键字已移除。

文件名: www_removed_com_tel.zip
文件大小:5G

解压出来,是一个 txt,文件大小 11.2G,用记事本打开是别想了,使用 ultraedit 打开,可以看看数据的结构

1
XXXXXXXXXXX XXXXXXXXXX

11位数字后面 一个空格,然后10位数字

因为 mongodb 的导入,只支持 json 和 csv 格式,json 太复杂了,我选择使用 csv 格式,将空格分隔符改为逗号分隔符。

1
tr -s '[:blank:]' ',' < www_removed_com_tel.txt > w.csv

导入 mongodb,因为没有表头,需要指定一下字段名,--fields="tel.string(),oid.string()"

1
mongoimport -d removed -c w --type=csv --file w.csv --fields="tel.string(),oid.string()" --columnsHaveTypes -u "myUserAdmin" -p "password" --port 27017 --authenticationDatabase "admin"

创建索引,指定一下 background 在后台创建索引,否则会阻塞查询

1
2
> db.w.createIndex({"tel":1},{background:true})
> db.w.createIndex({"oid":1},{background:true})

对于另一份 8e 数据,分隔符是四个-,同样使用 tr 来转换

1
tr -s '[=-=]' ',' <8e.txt > 8e.csv

导入

1
mongoimport -d removed -c q --type=csv --file 8e.csv --fields="qq.string(),tel.string()" --columnsHaveTypes -u "myUserAdmin" -p "password" --port 27017 --authenticationDatabase "admin"

创建索引

1
2
3
> db.q.createIndex({"qq":1},{background:true})

> db.q.createIndex({"tel":1},{background:true})

创建索引,因为尻尻号可能绑定多个tel号码,所以不能设置成唯一索引

参考:

https://stackoverflow.com/questions/43108359/how-to-remove-all-special-characters-in-linux-text

https://stackoverflow.com/questions/83329/how-can-i-extract-a-predetermined-range-of-lines-from-a-text-file-on-unix

https://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix/