您的位置:首页 > 其它

企业注册号构造、入库实现原理

2016-09-20 23:03 323 查看

1、背景:

为找到并尽可能小范围、精确的穷尽注册号,我做了哪些工作?

(1)、外部

通过Google、baidu、知乎大范围撒网找相关注册号的规律的资料。

核心结论:

1)前6位代表机关号,如:山东省有17地市,共175个机关号。

2)第7-14位为顺序号,第7位代表私营企业、有限责任公司、外资企业等,用1-9表示;

第8-14没有资料介绍规律。

3)第15位为校验码。

(2)、内部

1)通过程序实现了了校验码。

2)尝试通过穷举方式,穷举一个省的全部注册号。面临问题:已有核心结论,面太广,命中率非常低。

3)最终采用方法:从天眼查等网站找一定数量的数据(2万条)左右,穷举其第7-10位的可能性,

初步排查可能性远小于10000,这是提高命中率的极好的信号。

穷举方法:Shell脚本取第7-10位,然后排序sort、取唯一值uniq。

4)根据以上分析,构造某一个省内全部注册号数据。

3、一键构造某省数据、并完成入库流程

第一步:对机关号进行编码,并分别存储。

机关英文缩写存储到一个文件中,如: sd_register_name.txt机关号以地市为单位存储到不同的文件中,如:zb_register_codes.txt,共17个文件。比如:济南、济宁编号都是jn开头的,可以变化下一个为qn(确保不同即可)。

如:

淄博市 zb_zibo 370300

张店区 zb_zhangdian 370303

博山区 zb_boshan 370304

周村区 zb_zhoucun 370306

第二步:根据已有2万条记录,穷举的7-10位数据存储到数组中。

该部分内容数量不大,可以存储到数组中。后续如果需要扩展,直接向后填充即可。

程序求长度不要写死,直接sizeof(数组名)/sizeof(char*)求长度,便于动态扩展。

第三步:循环构造第11-14位。

穷举构造0000——9999共1万种可能性。

第四步:将前14位带入校验码程序验证,生成校验码。

第五步:构造拼接成15位程序。

4、程序具体实现步骤

Step1:逐行读sd_register_name.txt文件,外层共循环175次。(以山东省为例)

Step2:读到前两个字节为zb开头的,判定zb_register的数据库表是否存在,不存在,则创建之;存在,则跳过。

Step3:对应读zb_register_codes.txt文件,以便构造15位注册号;

Step4:构造完毕后,写入zb_register的数据库表中。

Step5:外层循环结束,整个写入完毕。

5、小结

采用技术:Linux平台 C++、MysqlC++、创建数据库表、读文件、构造数据、写数据库。

逻辑清晰后,其他水到渠成。

2016-9-20 pm23:02 思于家中床前

作者:铭毅天下

转载请标明出处,原文地址:

http://blog.csdn.net/laoyang360/article/details/52601607

如果感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐