在 PostgreSQL 中使用码农很忙 IP 地址数据库
生活随笔
收集整理的這篇文章主要介紹了
在 PostgreSQL 中使用码农很忙 IP 地址数据库
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在下載到碼農很忙 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 地址数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net Core HttpClient
- 下一篇: .NET开发者提高编程技能的5种方法