IP 地理位置数据库 将连续的 IP 区间(ip_from~ip_to)映射到
国家/地区、行政区、城市 与 经纬度。用于 地域分流、
合规风控、就近调度、运营分析 等场景。
数据按 IPv6 与 IPv4 分为两套独立导出,字段一致、文件格式一致。
数据结构(列说明)
ip_from VARCHAR(39) NOT NULL:起始 IP(兼容 IPv4/IPv6)。ip_to VARCHAR(39) NOT NULL:结束 IP(兼容 IPv4/IPv6)。country_code CHAR(2):ISO 3166-1 Alpha-2(如US、CN)。region VARCHAR(100):省/州/一级行政区。city VARCHAR(100):城市名称。latitude DECIMAL(9,5):纬度。longitude DECIMAL(9,5):经度。
建表 SQL(MySQL 示例)
CREATE TABLE geoip_ranges (
ip_from VARCHAR(39) NOT NULL,
ip_to VARCHAR(39) NOT NULL,
country_code CHAR(2),
region VARCHAR(100),
city VARCHAR(100),
latitude DECIMAL(9,5),
longitude DECIMAL(9,5),
PRIMARY KEY (ip_from, ip_to)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
在线下载
每种协议栈(IPv6 / IPv4)均提供三种格式:JSON (.gz)、CSV (.gz)、SQL (.gz)。
| 来源 | 类型 | 格式 | 下载 | 说明 |
|---|---|---|---|---|
| IPIN | IPv6 | JSON (.gz) | 下载 | IPv6 区间 → 地理信息(JSON 数组)。 |
| IPIN | IPv6 | CSV (.gz) | 下载 | 标准逗号分隔,含表头,便于 ETL/表格。 |
| IPIN | IPv6 | SQL (.gz) | 下载 | 含建表与批量 INSERT,直导 MySQL。 |
| IPIN | IPv4 | JSON (.gz) | 下载 | IPv4 区间 → 地理信息(JSON 数组)。 |
| IPIN | IPv4 | CSV (.gz) | 下载 | 标准逗号分隔,含表头,便于 ETL/表格。 |
| IPIN | IPv4 | SQL (.gz) | 下载 | 含建表与批量 INSERT,直导 MySQL。 |
注:所有下载均为 .gz 压缩包。可使用 gunzip 解压,或在程序中直接流式处理。
命令行快速下载
curl
# IPv6
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
curl -fL -OJ 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
wget
# 自动采用服务端文件名(--content-disposition)
# IPv6
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget --content-disposition 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
# 指定保存名 + 断点续传
wget -c -O ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
wget -c -O ipv6_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
wget -c -O ipv6_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
wget -c -O ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
wget -c -O ipv4_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
wget -c -O ipv4_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
aria2c(多线程)
# IPv6
aria2c -x16 -s16 -k1M -o ipv6_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv6_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz'
# IPv4
aria2c -x16 -s16 -k1M -o ipv4_ip_location.json.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.csv.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz'
aria2c -x16 -s16 -k1M -o ipv4_ip_location.sql.gz 'https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz'
PowerShell
# IPv6
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.json.gz" -OutFile "ipv6_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.csv.gz" -OutFile "ipv6_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv6_ip_location.sql.gz" -OutFile "ipv6_ip_location.sql.gz"
# IPv4
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.json.gz" -OutFile "ipv4_ip_location.json.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.csv.gz" -OutFile "ipv4_ip_location.csv.gz"
Invoke-WebRequest -Uri "https://ipin.io/exports/20251028_204109/ipv4_ip_location.sql.gz" -OutFile "ipv4_ip_location.sql.gz"
提示:下载得到的是 .gz 压缩文件,可使用 gunzip 或解压工具进行解压;也可在程序中直接以流方式读取。
格式说明
JSON
数组形式;每项包含 ip_from、ip_to、country_code、region、city、latitude、longitude。
[
{
"ip_from": "2400:cb00::",
"ip_to": "2400:cb00:ffff:ffff:ffff:ffff:ffff:ffff",
"country_code": "US",
"region": "California",
"city": "Los Angeles",
"latitude": 34.05460,
"longitude": -118.24400
}
]
CSV
首行表头;含逗号/引号的字段按 RFC 4180 转义。
ip_from,ip_to,country_code,region,city,latitude,longitude
1.0.0.0,1.0.0.255,AU,Queensland,South Brisbane,-27.47480,153.01700
SQL
包含建表与批量 INSERT 语句,适合直接导入 MySQL。
-- 建表见上文
INSERT INTO geoip_ranges
(ip_from, ip_to, country_code, region, city, latitude, longitude) VALUES
('1.0.0.0','1.0.0.255','AU','Queensland','South Brisbane',-27.47480,153.01700);
如何使用(快速上手)
- 根据需要选择 IPv6 或 IPv4 的 JSON / CSV / SQL 文件并下载。
- 解压并导入数据库(或在程序内直接解析)。
- 按国家/地区、区域、城市或经纬度实施分流与合规策略;可结合距离进行就近调度(粗粒度)。
- 建立定时任务(如每日/每周)覆盖式更新,保持库新鲜度。
补充说明
- IPv6/IPv4 均使用相同列定义;仅数据覆盖的地址空间不同。
- 经纬度和行政区用于近似定位,不代表精确地址;请遵循隐私与合规要求。
- 如需高性能查询,可将 IPv4 转换为 32 位整数区间,IPv6 使用前缀树/区间树或专用索引。