在下载到码农很忙 IP 地址数据库后,我们可以将其存储在 PostgreSQL 数据库中,并在需要查询某个 IP 对应的位置数据时,通过 SQL 语句获取正确的结果。这是一种很便捷的使用方式,并且在增加了恰当的索引后,可以取得不错的搜索效果。

PostgreSQL 数据库内置了 inet 和 range 两个数据类型,用来表示一个网络地址和数值范围。为了达到更高的查询速度,我们可以自定义一个名为 inet_rang 的数据类型,用于表示一个网络地址的范围:

CREATE TYPE inet_range AS RANGE (subtype=inet);

之后,需要在 PostgreSQL 中新建数据表:t_ip_data ,并为 ip_rang 搜索列增加 GiST 索引:

DROP TABLE IF EXISTS "public"."t_ip_data";
CREATE TABLE "public"."t_ip_data" ("id" serial4,"ip_begin" inet NOT NULL,"ip_end" inet NOT NULL,"ip_range" "public"."inet_range","cc" varchar(255) COLLATE "pg_catalog"."default","continent" varchar(255) COLLATE "pg_catalog"."default","flag" varchar(255) COLLATE "pg_catalog"."default","country" varchar(255) COLLATE "pg_catalog"."default","province" varchar(255) COLLATE "pg_catalog"."default","city" varchar(255) COLLATE "pg_catalog"."default","tag" varchar(255) COLLATE "pg_catalog"."default","isp" varchar(255) COLLATE "pg_catalog"."default");
CREATE INDEX "t_ip_data_IPRange_idx" ON "public"."t_ip_data" USING gist ("ip_range" "pg_catalog"."range_ops");
ALTER TABLE "public"."t_ip_data" ADD CONSTRAINT "t_ip_data_pkey" PRIMARY KEY ("id");

之后,使用 Navicat 等工具,将码农很忙 IP 地址数据库中的数据导入到数据表 t_ip_data 中,注意字段对应:

如果不是第一次导入数据,注意将【导入模式】设置为【复制】:

数据导入成功后,需要使用以下 SQL 语句对 ip_range 进行修正:

UPDATE t_ip_data SET ip_range =  ('[' ||ip_begin || ',' || ip_end || ']') :: inet_range

之后,就可以使用以下 SQL 语句进行数据查询:

SELECT * FROM t_ip_data WHERE ip_range @> '要查询的 IPv4 地址' :: inet

示例查询如下:

在 PostgreSQL 中使用码农很忙 IP 地址数据库相关推荐

  1. 在 MySQL 中使用码农很忙 IP 地址数据库

    在下载到码农很忙 IP 地址数据库后,我们可以将其存储在 MySQL 数据库中,并在需要查询某个 IP 对应的位置数据时,通过 SQL 语句获取正确的结果.这是一种很便捷的使用方式,并且在增加了恰当的 ...

  2. 如何在庞大的ip地址库中快速定位到对应的ip地址所对应的归属地?

    通过ip地址查看 ip地址的归属地,这个功能实现起来并不复杂,它是通过维护一个很大的ip地址库来实现的,比如查找 202..133.3 该ip地址库,那便会在对应的ip地址库中找到 一个区间 如 [2 ...

  3. 【Java网络编程】获得实验室局域网中所有开机主机名称和IP地址,InetAddress类,在java中如何获取IP地址的方法

    获得实验室所有主机的IP地址和主机名 一.InetAddress类 二.获得指定IP地址和主机名的主要方法以及练习 1.主要方法 2.源码 三.获得实验室局域网中所有开机主机名称和IP地址 1.源码 ...

  4. VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装

    VMware中安装CentOS7网络配置静态IP地址,常用配置和工具安装 在阿里云开源镜像地址下载镜像 Index of /centos/7.2.1511/isos/x86_64/ http://mi ...

  5. 5 获取当前访问的控制名称_LabVIEW编程技巧:网络通信中如何获取计算机名称、IP地址等信息...

    问题引出 在网络通讯编程中,经常需要获取当前主机的名称.IP地址等信息,在LabVIEW中如何获取这些信息呢? 下面以本机为例进行说明,先看一下本机的信息.在Windows系统中打开控制台程序,输入& ...

  6. python判断字符串合法,详解Python判定IP地址合法性的三种方法 python中判断一个字符串是否是IP地址...

    html 中 鼠标放在标签上会显示小手状,其它标签在其他标签上,美工给加了一些样式,鼠标放上去也显示小手状.有哪位大手状样式 有什么不懂的前端问题可以去菜鸟驿站.全都是泡沫,只一刹的花火,所谓的友情, ...

  7. 解决VMware中centos 7虚拟机,主ip地址:网络信息不可用。

    解决VMware中centos 7虚拟机,主ip地址:网络信息不可用. 看了很多方法都不适用然后琢磨出来了一个奇奇怪怪的方法(咱也不知道算不算解决了,但是这个方法能ping通外网 查看防火墙是否关闭 ...

  8. 查看oracle数据库中某个dblink对应的数据库连接ip地址

    查询oracle数据库中某个dblink对应的连接数据库ip地址,其实只需要查到对应的创建语句就好了. oracle数据库查询对应dblink的连接数据库ip地址时,首先在oracle数据库中使用 s ...

  9. python中利用re模块正则表达式匹配ip地址

    python中利用正则表达式判断ipv4地址是否合法 ip地址的范围为0.0.0.0-255.255.255.255,分成四段,则每段的范围都是0-255,因此,以一段进行分析: 在进行书写匹配规则时 ...

最新文章

  1. 人工智能未来读后感 ----by RayKurzweil
  2. Java笔记-重写JsonSerializer中serialize方法使Json中时间戳/1000
  3. 创建图书管理_阿拉尔市文化(图书)馆举办总分馆制建设图书管理软件、文化云专题培训班...
  4. shell与shell脚本
  5. shopnum1商城系统
  6. 请教大家一个问题,有关于数据库的设计
  7. 博途V16软件官方下载和安装
  8. 能查阅国外文献的8个论文网站(最新整理)
  9. oracle11g怎么打开oem,oracle11g启动OEM
  10. ISIS协议的基础配置实验,原来做ISIS基础配置还可以这么有趣
  11. Android 3D 旋转
  12. Python智能语音机器人
  13. 传感器与检测技术基础知识(4)—— 电阻式传感器
  14. php model module,Yii2用Gii自动生成Module+Model+CRUD
  15. OPCode详解及汇编与反汇编原理
  16. SpringBoot通过WorkBook快速实现对Excel的导入和导出(包括数据校验)
  17. 非阻塞recvfrom卡住
  18. Python爬虫 | 获取股票行业资金流向
  19. python证书微软认证_怎样考取微软工程师?
  20. 胡润研究院第二年发布中国豪华车品牌特性研究白皮书

热门文章

  1. ASP.Net 验证正则表达式
  2. centos安装与配置R语言
  3. mysql配置-django
  4. 2007武汉.NET俱乐部沙龙-VS2008、WPF、Silverlight
  5. DropDownList 選項改變確認腳本
  6. 文件目录管理与显示c语言,Centos 7 文件和目录管理
  7. ipad和iphone切图_如何在iPhone和iPad上密码保护照片
  8. linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
  9. windows安装程序创建_如何在Windows上创建已安装程序的列表
  10. 求连续序列的最大子序列和