Mysql 使用来自不同来源的数据集填充Maxmind数据库

Mysql 使用来自不同来源的数据集填充Maxmind数据库,mysql,sql,geolocation,geoip,maxmind,Mysql,Sql,Geolocation,Geoip,Maxmind,我目前正在使用Maxmind Geolite数据库。我有一个名为GEO_IP_CITY_BLOCKS_0的表,其中的列是- START_IP_NUM END_IP_NUM LOCATION_ID 上表中的示例数据- 7602176 7864319 16 16777216 16777471 17 我知道,如果我要查找IP地址,那么我需要将该IP地址转换为long,这意味着我可以使用MySql中的以下查询

我目前正在使用Maxmind Geolite数据库。我有一个名为GEO_IP_CITY_BLOCKS_0的表,其中的列是-

START_IP_NUM     END_IP_NUM     LOCATION_ID
上表中的示例数据-

7602176           7864319           16
16777216          16777471          17
我知道,如果我要查找IP地址,那么我需要将该IP地址转换为long,这意味着我可以使用MySql中的以下查询来获取位置ID,然后根据位置ID,我可以进一步查找以获取城市、州等-

SELECT * FROM `GEO_IP_CITY_BLOCKS_0` WHERE INET_ATON("174.36.207.186") BETWEEN start_ip_num AND end_ip_num
现在我的问题是-

假设对于任何IP地址,如果没有范围,那么我将无法获得任何位置标识,对吗?然后我无法进一步查找,因为位置\ ID不存在?。 这些起始值和结束值是如何决定Maxmind数据库中的哪些因素的? 我问这个问题的原因是,假设任何IP地址在MySql Maxmind数据库中都没有范围,那么我想的是创建自己的范围,并将其他来源的IP地址对应的数据放入MySql数据库Maxmind中

如果出于某种原因Maxmind中的特定IP地址没有数据,是否有人尝试在Maxmind数据库中填充自己的数据集

请让我知道你的想法

比如说-

就像这个IP地址105.160.159.59一样,我在Maxmind数据库中没有任何范围,因为我试图执行这个SQL

从GEO_IP_CITY_BLOCKS_0中选择*,其中INET_在起始IP_num和结束IP_num之间为105.160.159.59


但对于相同的IP地址,我可以从其他来源获取数据,因此我要寻找的是-有没有任何方法可以填充Maxmind数据库中的数据集,用于我上面描述的类似用例?

大多数地理位置数据库都有几乎所有IP范围的数据-它们折叠连续的IP范围以节省空间。也许我不明白这个问题-你想添加新的范围,还是分解现有的范围?我的印象是,对于某些IP地址,可能数据库中没有这些范围。就像这个IP地址105.160.159.59一样,我在Maxmind数据库中没有任何范围,因为我试图执行SQL SELECT*FROM GEO_IP_CITY_BLOCKS_0,其中INET_在start_IP_num和end_IP_num之间。但是对于这个IP地址,我可以从其他来源获取数据,所以我想问的是-有没有办法在Maxmind数据库中填充类似用例的数据集?我想“lite”版本可能不完整-但是没有什么可以阻止您添加这样的记录。如果它只是一个IP,那么start\u IP\u num==end\u IP\u num。首先我使用的不是精简版。但是如果有一堆IP地址,那么在这种情况下我应该怎么做呢?那么我应该选择什么样的开始和结束?原始帖子表明MaxMind GeoLite是免费的。无论如何,您只需要使用INET_ATON存储与您的IP地址等效的无符号整数。如果它们是非连续范围,则需要多个这样的条目,start==end。