日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

在 PostgreSQL 中使用码农很忙 IP 地址数据库

發(fā)布時(shí)間:2023/12/4 数据库 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在 PostgreSQL 中使用码农很忙 IP 地址数据库 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在下載到碼農(nóng)很忙 IP 地址數(shù)據(jù)庫后,我們可以將其存儲(chǔ)在 PostgreSQL 數(shù)據(jù)庫中,并在需要查詢某個(gè) IP 對(duì)應(yīng)的位置數(shù)據(jù)時(shí),通過 SQL 語句獲取正確的結(jié)果。這是一種很便捷的使用方式,并且在增加了恰當(dāng)?shù)乃饕?#xff0c;可以取得不錯(cuò)的搜索效果。

PostgreSQL 數(shù)據(jù)庫內(nèi)置了?inet?和?range?兩個(gè)數(shù)據(jù)類型,用來表示一個(gè)網(wǎng)絡(luò)地址和數(shù)值范圍。為了達(dá)到更高的查詢速度,我們可以自定義一個(gè)名為?inet_rang?的數(shù)據(jù)類型,用于表示一個(gè)網(wǎng)絡(luò)地址的范圍:

CREATE TYPE inet_range AS RANGE (subtype=inet);

之后,需要在 PostgreSQL 中新建數(shù)據(jù)表: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 等工具,將碼農(nóng)很忙 IP 地址數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到數(shù)據(jù)表 t_ip_data 中,注意字段對(duì)應(yīng):

如果不是第一次導(dǎo)入數(shù)據(jù),注意將【導(dǎo)入模式】設(shè)置為【復(fù)制】:

數(shù)據(jù)導(dǎo)入成功后,需要使用以下 SQL 語句對(duì) ip_range 進(jìn)行修正:

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

之后,就可以使用以下 SQL 語句進(jìn)行數(shù)據(jù)查詢:

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

示例查詢?nèi)缦?#xff1a;

總結(jié)

以上是生活随笔為你收集整理的在 PostgreSQL 中使用码农很忙 IP 地址数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。