MySQL-запрос для определения IP-адреса с помощью Geolite2

Я импортировал данные Geolite2 из CSV в MySQL ( бесплатные загружаемые базы данных GeoLite2)

У меня сейчас 3 стола

  • GeoLite2-Сити-блоки-IPv4
  • GeoLite2-Сити-блоки-IPv6
  • GeoLite2-City-Locations-fr (я использую его для французских IP-адресов)

Я не могу понять, какой запрос SQL мне нужно написать, чтобы получить местоположение с определенного IP-адреса.

-- РЕДАКТИРОВАТЬ:

Нашел ответ: Идея состоит в том, чтобы создать два дополнительных поля в таблице блоков:

ip_from = INET_ATON(SUBSTRING(@network, 1, LOCATE('/', @network) - 1))

ip_to = (INET_ATON(SUBSTRING(@network, 1, LOCATE('/', @network) - 1)) + (pow(2, (32-CONVERT(SUBSTRING(@network, LOCATE('/', @network) + 1), UNSIGNED INTEGER)))-1))

Тогда местоположение можно найти с помощью:

SELECT * FROM `geoip_locations` WHERE geoname_id = 
    (SELECT geoname_id FROM geoip_blocks WHERE ip_to >= INET_ATON(TRIM('ip_adress_here')) AND ip_from <= INET_ATON(TRIM('ip_adress_here')));

0 ответов

Другие вопросы по тегам