利用纯真ip地址库 查询 ip所属地

1. 首先下周数据源,选择是纯真数据库:http://www.cz88.net/

2. 安装后,打开软件,将数据导出为txt格式。

3. 处理数据,参照网上的文章(http://www.jb51.net/article/20511.htm),用vi打开,执行如下命令::%s/\s\+/;/

执行3次。

%s代表全局搜索替换,\s 代表空格 , \+ 代表尽可能多的匹配前面的字符,;代表替换成‘;‘(我再实际操作的时候将;替换为tab了)

4. 创建表ip2

1
2
3
4
startip varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0
endip   varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0
location    varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0
detail  varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0

 最后是数据库的编码格式就选择为 gbk_chinese_ci

创建表ip

1
2
3
4
5
id  int 10  0   0   -1  -1  0   0       0                   -1  0
startip int 10  0   -1  0   0   0   0       0                   0   0
endip   int 10  0   -1  0   0   0   0       0                   0   0
location    varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0
detail  varchar 255 0   -1  0   0   0   0       0       gbk gbk_chinese_ci      0   0

 5. 将文本中的数据导入到数据库中来。

d:\mysql>mysqlimport -h127.0.0.1 -uroot -p --local --delete ips ip2.txt (因为我的文本中的分隔符是tab,所以这里不用指定分隔符)

注意文本的文件名必须和表的名字相同

6. 为了以后查询方便,将ip用int存储,将ip2的数据的ip转换为数字后插入ip表中

INSERT into ips.ip(startip,endip,location,detail)  (select Inet_ATON(startip),inet_ATON(endip),location,detail FROM ips.ip2)

7. 这样当你需要查询某个ip的地址时,可以如下这样:

SELECT * from ips.ip where startip < INET_ATON(‘1.2.5.333‘) and INET_ATON(‘1.2.5.33‘)< endip

 

 



利用纯真ip地址库 查询 ip所属地

上一篇:IOS中的动画菜单


下一篇:ios UnitTest 学习笔记