标题: 处理IP数据库(三十万条记录)
[打印本页]
作者: yishanju
时间: 2010-5-7 01:56
标题: 处理IP数据库(三十万条记录)
我自己在批处理中使用FR.EXE 完成了本次的数据处理,但是还没有实现IP数据库的精简。希望下一次还能更加海量的数据需要处理。更新时间:16:06 2010-5-9
把纯真IP数据库处理需要的内容。
处理规则:
1、把不包含中国省市地名的记录删掉。一楼已经列出大部份需要删除的信息。
2、把省份名称拆出来放在一个字段里,把城市名称放到另一个字段里。
3、处理后的信息要包含有:省、市、ip开始地址、ip结束地址
4、直辖市的省份名称和城市名称一样。
5、例如处理成这样的格式:
省 市 ip开始地址 ip结束地址
湖南 张家界 211.0.0.1 211.255.255.255
北京 北京 211.100.26.179 211.100.26.190
6、如果有记录只精确到省份,城市则以"-"代替,输出成这样:
广西 - 222.217.171.167 222.217.171.255
7、最终输出的文件格式可以是MDB,EXCEL,CSV,MSSQL或者其它。
8、把同一个市,并且是连接的IP进行精简。
下载区:
纯真IP数据库---自带的SHOWIP.EXE可以把IP数据解压为txt格式文本
===
http://update.cz88.net/soft/qqwry.rar
hrsIP---纯真IP数据转ACCESS MDB数据库
===
http://img3.k68-img.cn/k68over20 ... n_2010571240_01.zip
文本编辑器win32pad ---可以打开20M的文本不假死,这个工具本身才33K,绿色解压即用
===
http://www.gena01.com/win32pad/win32pad_1_5_10_4.zip
FR.EXE ---正则查找替换命令行工具===
http://baiy.cn/utils/fr/fr.rar
从SQL SERVER 2000中提取的OSQL.EXE和ISQL.EXE---方便在批处理中连接SQLSERVER并执行SQL命令
===
http://img2.k68.cn/k68over2008-1 ... 200921311843_01.rar
OleDbCmd---在批处理中连接MDB数据和执行SQL命令
===下载页面:
http://sourceforge.net/projects/oledbcmd/
以下是我整理出来的,您如果发现不全,能提出来,定非常感谢。
包含以下内容的记录则删除掉:
朝鲜
韩国
日本
菲律宾
越南
老挝
柬埔寨
缅甸
泰国
马来西亚
文莱
新加坡
印度尼西亚
东帝汶
尼泊尔
不丹
孟加拉国
印度
巴基斯坦
斯里兰卡
马尔代夫
哈萨克斯坦
吉尔吉斯斯坦
塔吉克斯坦
乌兹别克斯坦
土库曼斯坦
阿富汗
伊拉克
伊朗
叙利亚
约旦
黎巴嫩
以色列
巴勒斯坦
阿拉伯
巴林
卡塔尔
科威特
阿联酋
阿曼
也门
格鲁吉亚
亚美尼亚
阿塞拜疆
土耳其
塞浦路斯
芬兰
瑞典
挪威
冰岛
丹麦
爱沙尼亚
拉脱维亚
立陶宛
白俄罗斯
俄罗斯
乌克兰
摩尔多瓦
波兰
捷克
斯洛伐克
匈牙利
德国
奥地利
瑞士
列支敦士登
英国
爱尔兰
荷兰
比利时
卢森堡
法国
罗马尼亚
保加利亚
塞尔维亚
黑山
马其顿
阿尔巴尼亚
希腊
斯洛文尼亚
克罗地亚
波斯尼亚
黑塞哥维那
波黑
意大利
梵蒂冈
圣马力诺
马耳他
西班牙
葡萄牙
安道尔
摩纳哥
埃及
利比亚
突尼斯
阿尔及利亚
摩洛哥
埃塞俄比亚
厄立特里亚
索马里
吉布提
肯尼亚
坦桑尼亚
乌干达
卢旺达
布隆迪
塞舌尔
苏丹
乍得
中非
喀麦隆
赤道几内亚
加蓬
刚果
圣多美
普林西比
毛里塔尼亚
塞内加尔
冈比亚
马里
布基纳法索
几内亚
几内亚比绍
佛得角
塞拉利昂
利比里亚
科特迪瓦
加纳
多哥
贝宁
尼日尔
赞比亚
安哥拉
津巴布韦
马拉维
莫桑比克
博茨瓦纳
纳米比亚
南非
斯威士兰
莱索托
马达加斯加
科摩罗
毛里求斯
澳大利亚
新西兰
巴布亚新几内亚
所罗门群岛
瓦努阿图
密克罗尼西亚
马绍尔群岛
帕劳
瑙鲁
基里巴斯
图瓦卢
萨摩亚
斐济群岛
汤加
库克群岛
纽埃
加拿大
美国
墨西哥
危地马拉
伯利兹
萨尔瓦多
洪都拉斯
尼加拉瓜
哥斯达黎加
巴拿马
巴哈马
古巴
牙买加
海地
多米尼加
安提瓜
巴布达
圣基茨
尼维斯
多米尼克
圣卢西亚
圣文森特
格林纳丁斯
格林纳达
巴巴多斯
特立尼达
多巴哥
哥伦比亚
委内瑞拉
圭亚那
苏里南
厄瓜多尔
秘鲁
玻利维亚
巴西
智利
阿根廷
乌拉圭
巴拉圭
AFRINIC
iana
纯真网络
CZ88.NET
尼日利亚
蒙古
北美
欧洲
英格兰
土尔其
中东
法罗
RIPE
Teleglobe
联合国
波多
直布罗陀
APNIC
未分配
局域网
亚洲
非洲
大洋
南极
南美
中国
新喀里多尼亚
NIC
法属
玻利尼西
雅虎
孟加拉
留尼汪
亚太
xrea.com
华.地区
中国省份列表.txt:
河北
山西
辽宁
吉林
黑龙江
江苏
浙江
安徽
福建
江西
山东
河南
湖北
湖南
广东
广西
海南
四川
贵州
云南
西藏
陕西
甘肃
青海
宁夏
新疆
台湾
直辖市:
北京
天津
上海
重庆
香港
澳门
自治区:
内蒙古
广西
新疆
宁夏
西藏
[
Last edited by yishanju on 2010-5-9 at 16:31 ]
作者: yishanju
时间: 2010-5-7 01:57
把纯真IP数据库处理需要的内容。
处理规则:
1、把不包含中国省市地名的记录删掉。一楼已经列出大部份需要删除的信息。
2、把省份名称拆出来放在一个字段里,把城市名称放到另一个字段里。
3、处理后的信息要包含有:省、市、ip开始地址、ip结束地址
4、直辖市的省份名称和城市名称一样。
5、例如处理成这样的格式:
省 市 ip开始地址 ip结束地址
湖南 张家界 211.0.0.1 211.255.255.255
北京 北京 211.100.26.179 211.100.26.190
6、如果有记录只精确到省份,城市则以"-"代替,输出成这样:
广西 - 222.217.171.167 222.217.171.255
7、最终输出的文件格式可以是MDB,EXCEL,CSV,MSSQL或者其它。
[
Last edited by yishanju on 2010-5-7 at 14:50 ]
作者: yishanju
时间: 2010-5-7 01:57
IP数据库经过处理后已经得到了我们想要的格式。
接下来是要精简数据库,把同一个地址,并且连续的IP地址合并起来。
谁要的好想法或者代码能实现IP数据库的精简?
[
Last edited by yishanju on 2010-5-10 at 12:58 ]
作者: yishanju
时间: 2010-5-7 01:57
再占一楼。
作者: HAT
时间: 2010-5-7 14:31
原始数据是哪个?
作者: yishanju
时间: 2010-5-7 14:49
就是纯真IP数据库,处理成要求的格式
作者: yishanju
时间: 2010-5-7 16:04
可以把纯真IP数据库导入SQL,EXCEL,ASSECC mdb,csv等等然后再处理都可以。
作者: radem
时间: 2010-5-7 20:02
以前常用IPConv来转换
作者: terse
时间: 2010-5-8 11:46
findstr /rivg:删除内容文档 原始ip.txt>tem_ip
然后FOR里处理tem_ip
作者: yishanju
时间: 2010-5-8 21:09
删除多余信息:
这个代码要慢好多。
@echo off
title 删除多余记录
copy 2.txt 3.txt /y
setlocal EnableDelayedExpansion
for /f %%a in (国家列表.txt) do (
set /a n=!n!+1
echo !n!
fr 3.txt -ric:".*%%a.*\r\n" -t:""
)
echo 完成!
pause
作者: HAT
时间: 2010-5-8 22:28
15963行开始,有很多类似以下内容:
59.66.0.0 59.66.32.255 清华大学 CZ88.NET
如何处理?
作者: terse
时间: 2010-5-8 22:47
用findstr /rivg:国家列表.txt 原始ip.txt>tem_ip
这个速度并不理想
换个思路
把省市列表和直辖市合并为 HB.txt
findstr /rig:HB.txt 原始IP.txt>temp_ip.txt
这个速度明显提高了
作者: terse
时间: 2010-5-8 23:18
本想用"省市" 作分隔符在 FOR里处理 发现有记录信息 没有省市 如:西藏拉萨 宁夏银川 上海交通大学。。
不知道此类怎么处理
作者: yishanju
时间: 2010-5-8 23:20
Quote: |
Originally posted by HAT at 2010-5-8 22:28:
15963行开始,有很多类似以下内容:
59.66.0.0 59.66.32.255 清华大学 CZ88.NET
如何处理? |
|
暂时先留着吧。
作者: yishanju
时间: 2010-5-8 23:22
Quote: |
Originally posted by terse at 2010-5-8 23:18:
本想用"省市" 作分隔符在 FOR里处理 发现有记录信息 没有省市 如:西藏拉萨 宁夏银川 上海交通大学。。
不知道此类怎么处理 |
|
这就是我为什么要这么费劲把国家列表,和省份列表整理出来的原因了。
作者: yishanju
时间: 2010-5-9 01:46
靠,不规则的数据信息真难处理,吐血了
本来以为可行代码,运行完之后看结果有一些信息处理不到,又从头改代码从头处理。
作者: yishanju
时间: 2010-5-9 02:37
Quote: |
Originally posted by terse at 2010-5-8 22:47:
用findstr /rivg:国家列表.txt 原始ip.txt>tem_ip
这个速度并不理想
换个思路
把省市列表和直辖市合并为 HB.txt
findstr /rig:HB.txt 原始IP.txt>temp_ip.txt
这个速度明显提高了 |
|
自从用上了FR.EXE很少考虑这样处理文本.
作者: yishanju
时间: 2010-5-9 02:45
先反馈一下信息,我已经在批处理使用FR.exe,完成了本次37万条记录的纯真IP数据的处理,
嘿嘿,至少可以说明FR.EXE在-RIC单行正则匹配模式下可以经受30多万条信息的处理.
作者: terse
时间: 2010-5-9 11:21
Quote: |
Originally posted by yishanju at 2010-5-9 02:37:
自从用上了FR.EXE很少考虑这样处理文本. |
|
和yishanju兄10楼的代码比 时间上有优势吧
@echo off
findstr /rivg:国家列表.txt 原始IP.txt>tem_ip
pause
处理的结果不是很满意
@echo off
findstr /rivg:国家列表.txt 原始IP.txt>tem_ip
for /f "delims=" %%i in (直辖市.txt) do set %%i=%%i
(for /f "usebackq tokens=1-3" %%a in ("tem_ip") do (
for /f "tokens=1-2 delims=省市" %%i in ("%%c") do (
if not defined %%i (
if "%%j" neq "" (echo %%i %%j %%a %%b)else echo %%i - %%a %%b
) else (
echo %%i %%i %%a %%b
)
)
))>ipa.txt
pause
[
Last edited by terse on 2010-5-9 at 11:39 ]
作者: yishanju
时间: 2010-5-9 12:20
很好,速度很快
作者: 523066680
时间: 2010-5-9 17:20
依山居也是猛男一个……
作者: yishanju
时间: 2010-5-9 17:38
原来还想用PYTHON 处理的,不过水平相当之菜,烦躁之下还是直接用FR折腾出来了
处理出来的结果比terse的代码效果要好一点,使用FR正则匹配,对输出的结果比较放心,虽然比较慢。
嘿,其实人家MM来着,不是男滴。
作者: HAT
时间: 2010-5-9 19:05
标题: Re 22 楼
美女,这种问题可能Perl效率会更高,要不找到Perl版块问问?
作者: 523066680
时间: 2010-5-9 19:13
我知道依山居百博的头像是个美女,但是lxmxn老大很明确的告诉我
依山居是男的! 所以我就再也没去美女头像的空间了…………
vbs处理行不行…… 接过一次文本处理任务,也是挺多信息的,
里面也是有IP 地址。。。
当时有一些不对头的信息,我继续导入最终文档,另外在屏幕上显示
可能需要人工处理的行为:XXX...
像这样
Quote: |
需要留意的编号: 2480788 位于第 89 行,请核查各项信息
需要留意的编号: 2480845 位于第 90 行,请核查各项信息
需要留意的编号: 2480263 位于第 745 行,请核查各项信息
需要留意的编号: 2481192 位于第 2167 行,请核查各项信息
需要留意的编号: 2481303 位于第 2259 行,请核查各项信息
共 2308 个信息, 以上列出的需人工修改的信息量是: 5 |
|
话说信息量远远没有这个多……
[
Last edited by 523066680 on 2010-5-9 at 19:16 ]
作者: yishanju
时间: 2010-5-9 22:45
在学PYTHON呢,进步好慢,没有时间学PERL。
好几年没学到新东西了,弄得现在工作好难找。
[
Last edited by yishanju on 2010-5-9 at 22:49 ]
作者: 523066680
时间: 2010-5-10 09:29
学perl, python 之类的能当做技能来找工作么? 那我也去学学。
作者: chy505908440
时间: 2010-5-10 11:17
来过
作者: yishanju
时间: 2010-5-10 11:38
python 慢慢火起来的过程当中,python程序员缺人呢
作者: yishanju
时间: 2010-5-10 13:00
IP数据库经过处理得到想要的结果后,怎么样进行精简呢?
也就是把同一个地方并且连接的IP地址合并到一条中。