有人知道如何使用SQL从MaxMind的IP4乡村CSV中查找GeoLite2地址吗?
多年来我一直在使用MaxMind的免费GeoIP数据,并且希望升级到他们的GeoLite2数据。我已经将块和位置数据加载到MySQL表中,但不确定如何确定IP4地址的地址范围。旧格式的每个块都有一个开始/结束号;新格式似乎只有一个开始号。
我已经搜索过MaxMind开发人员的文档,并在谷歌上搜索过,但似乎找不到任何关于如何查询新格式的信息。我相信这是显而易见的,如果我在这期间弄清楚了,就会编辑这篇帖子。
我想,谢谢,我必须找到第一个更大或等于IP4地址的块条目,并且可能限制1。
我将这些数据用于web应用程序外观,以及直接在SQL中查询以生成报表;因此,我通常需要确保能够在Perl代码和纯SQL中实现查找。
我正在升级,因为我看到了一些有趣的结果,日本游客似乎是来自法国的旧数据。
非常感谢
发布于 2014-02-25 15:04:59
Geolite2 CSV中使用的地址格式包括一个块IP地址开始,后面跟着一个前缀长度#,该前缀长度#可以转换为块IP地址端。
(让人有些困惑的是,Maxmind正在使用"Network_Mask_Length“而不是"Prefix_Length”(公认的IPv6术语)来标记这个字段。)
Geolite2 CSV的块字段布局:
network_start_ip,network_mask_length,geoname_id,registered_country_geoname_id,re
presented_country_geoname_id,postal_code,latitude,longitude,is_anonymous_proxy,i
s_satellite_provider
示例:(从Geolite2-Country-Blocks.csv提取的记录)
::ffff:81.248.136.0,120,3578476,3017382,,,,,0,0
考虑到上面的例子,分配给块的最后一个IPv4地址是什么?
First IP address: 81.248.136.0
Prefix_Length/Network_mask_Length: 120
Last IP address: 81.248.136.255
下面的URL可能非常方便,可以快速查找(特定Prefix_Length可用的IP地址数):
__philippe
发布于 2014-02-27 08:43:59
Prefix_Length计算器的使用:
(在本例中,更多的是一个简单的表查找工具,而不是计算器,真的.;-)
在计算器中,勾选IPv6按钮,然后单击PL框向下箭头。将提供一个“前缀长度”列表,并提供相应的可用IP地址数。
要确定任何Geolite2块的最后一个IP入口,以下前缀_Length/address对的相关范围很可能就足够了:
Prefix #addresses
Length
117 2048
118 1024
119 512
120 256
121 128
122 64
123 32
124 16
125 8
126 4
127 2
128 1
注意,Geolite2文件结构遵循一种混合IPv4 4/IPv4 6表示法,也就是“IPv4 4映射-IPv4 6地址”。
这些“混合”地址是用标准IPv6格式的前96位写成的,其余的32位是用传统的IPv4小点小数点表示法写的。例如,::ffff:192.0.2.128表示IPv4地址192.0.2.128
关于这个(毛茸茸的)主题的更多信息,请在这里查看:
http://en.wikipedia.org/wiki/IPv6
__philippe
https://stackoverflow.com/questions/22002542
复制相似问题