上个月,机缘巧合,拿到一份不知道是什么鬼网站的 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://alvinalexander.com/blog/post/linux-unix/how-remove-non-printable-ascii-characters-file-unix/