IP到国家代码映射之GeoLite2导入到MySQL形成数据字典
一、准备CSV文件与MySQL表结构
- 下载并解压GeoLite2-Country-CSV数据
从 MaxMind 下载 GeoLite2-Country-CSV.zip,解压后获取以下文件:
GeoLite2-Country-Blocks-IPv4.csv:IPv4地址段与国家关联数据;
GeoLite2-Country-Locations-en.csv:国家代码与名称映射表。
在 GeoIP 数据库结构中,geoip_country_blocks(存储 IP 地址范围与国家关联关系)和 geoip_country_locations(存储国家详细信息)通过 geoname_id 字段进行关联
`2. 创建匹配的MySQL表
表1:IPv4地址段表 (geoip_country_blocks)
sql
Copy Code
CREATE TABLE geoip_country_blocks
(
network
VARCHAR(18) NOT NULL, -- IPv4地址段(如 1.0.0.0/24)
geoname_id
INT, -- 地理位置ID
registered_country_geoname_id
INT, -- 注册国家ID
represented_country_geoname_id
INT, -- 代理国家ID
is_anonymous_proxy
TINYINT(1), -- 是否匿名代理(0/1)
is_satellite_provider
TINYINT(1), -- 是否卫星提供商(0/1)
PRIMARY KEY (network
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
表2:国家代码表 (geoip_country_locations)
sql
Copy Code
CREATE TABLE geoip_country_locations
(
geoname_id
INT PRIMARY KEY, -- 地理位置ID(主键)
locale_code
CHAR(2), -- 语言代码(如 en)
continent_code
CHAR(2), -- 大洲代码(如 AS)
continent_name
VARCHAR(20), -- 大洲名称(如 Asia)
country_iso_code
CHAR(2), -- 国家ISO代码(如 CN)
country_name
VARCHAR(50) -- 国家名称(如 China)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
`
二、导入CSV数据到MySQL
- 使用 LOAD DATA INFILE 命令
导入IPv4地址段表
sql
Copy Code
LOAD DATA LOCAL INFILE '/path/to/GeoLite2-Country-Blocks-IPv4.csv'
INTO TABLE geoip_country_blocks
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; -- 跳过CSV首行标题:ml-citation{ref="2,3" data="citationList"}
导入国家代码表
sql
Copy Code
LOAD DATA LOCAL INFILE '/path/to/GeoLite2-Country-Locations-en.csv'
INTO TABLE geoip_country_locations
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS; -- 跳过CSV首行标题:ml-citation{ref="2,3" data="citationList"}
参数说明
LOCAL:从客户端本地路径读取文件(需开启MySQL的local_infile参数);
FIELDS TERMINATED BY ',':字段分隔符为逗号;
ENCLOSED BY '"':字段值用双引号包围;
LINES TERMINATED BY '\n':行终止符为换行符(Windows生成文件需改为\r\n);
IGNORE 1 ROWS:忽略CSV文件的标题行。
三、常见问题处理字符编码冲突
若导入时出现乱码,在LOAD DATA语句中指定字符集:
sql
Copy Code
LOAD DATA ... CHARACTER SET utf8mb4 ... ; -- 指定编码为UTF-8:ml-citation权限不足或文件路径错误
确保MySQL用户有文件读取权限,并使用绝对路径:
sql
Copy Code
SHOW VARIABLES LIKE 'secure_file_priv'; -- 查看允许导入的目录:ml-citation重复数据冲突
使用REPLACE或IGNORE关键词处理主键冲突:
sql
Copy Code
LOAD DATA ... REPLACE ... ; -- 覆盖重复记录:ml-citation
四、验证导入结果
检查数据量是否匹配
sql
Copy Code
SELECT COUNT(*) FROM geoip_country_blocks; -- 对比CSV行数(排除标题行):ml-citation抽样查询示例
sql
Copy Code
SELECT * FROM geoip_country_locations
WHERE country_iso_code = 'CN'; -- 查找中国数据:ml-citation
五、图形化工具备选方案(如Navicat)
右击目标表选择“导入向导”,指定CSV文件并映射字段,适合不熟悉命令行的用户。
IP到国家代码映射之GeoLite2导入到MySQL形成数据字典的更多相关文章
- 将 Book-Crossing Dataset 书籍推荐算法中 CVS 格式测试数据集导入到MySQL数据库
本文内容 最近看<写给程序员的数据挖掘指南>,研究推荐算法,书中的测试数据集是 Book-Crossing Dataset 提供的亚马逊用户对书籍评分的真实数据.推荐大家看本书,写得不错, ...
- 用 cctld工具创建带有国家代码的IP地址表
用 cctld工具创建带有国家代码的IP地址表 cctld tools is creating IP addresses table with Country Code 项目地址 https://gi ...
- 5、ASP.NET MVC入门到精通——NHibernate代码映射
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 上一篇NHibernate学习笔记—使用 NHibernate构建一个ASP.NET MVC应用程序 使用的是xml进行orm映射,那么这一 ...
- 关于Docker compose值IP与域名的映射 之 extra_host
公司的所有项目都是采用Docker容器化部署,最近有一个项目需要使用定时任务调用第三方Api,正式web环境服务器的网络与第三方网络是通畅的,但是当将代码发布到正式环境,调用接口却显示 System. ...
- CentOS6修改主机名(hostname)及 修改/etc/hosts 文件,增加ip和hostname的映射关系(转)
CentOS修改主机名(hostname) 需要修改两处:一处是/etc/sysconfig/network,另一处是/etc/hosts,只修改任一处会导致系统启动异常.首先切换到root用户. ...
- Magento Table Rate运费国家代码汇总
Magento Table Rate是三种内置未调用第三方API运费方式中最强大的一个.通过设置国家,区域,邮编,价格来划分不同的运费等级.该方式基本能够满足轻量级的B2C商城的运费模式.这里收集下国 ...
- Unity3D开发之“获取IOS设备所在的国家代码"
原地址:http://dong2008hong.blog.163.com/blog/static/469688272014021025578/ 在前一段时间游戏开发中需要实现获取IOS设备所在的国家代 ...
- POPTEST老李分享修改dns ip的vbs代码
POPTEST老李分享修改dns ip的vbs代码 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨 ...
- C#验证ip地址的代码
如下的代码是关于C#验证ip地址的代码. public Boolean CheckIPValid(String strIP) { char chrFullStop = '.'; string[] ar ...
- JSP 获取真实IP地址的代码
[转载]JSP 获取真实IP地址的代码 JSP 获取真实IP地址的代码 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的. ...
随机推荐
- 批量视频剪辑软件开心版合集——CRVideoMate、固乔剪辑助手、批量剪辑大师MV批量创作大师、ai全自动剪辑
CRVideoMate(推荐) 非常好用的批量剪辑工具,如果是简单的基础处理完全是够用了. 软件的官网:http://www.cr-soft.net/crvideomate.html 如果经济允许推荐 ...
- Scala高阶函数 1
package com.wyh.day01 /** * * 高阶函数 */ object ScalaFun3 { def main(args: Array[String]): Unit = { //定 ...
- C# Attribute 特性
https://blog.csdn.net/FantasiaX/article/details/1636913
- C#枚举帮助EnumHelper
1 public class EnumHelper 2 { 3 #region 获取枚举 4 public static List<EnumValue> GetEnumList(Type ...
- Dicom纯js的三维重建影像浏览器
主要功能介绍 实现通过浏览器浏览Dicom影像阅片.主要功能: 支持标准DIcom影像的2D浏览,预设窗位,伪彩,序列间,序列内多种布局方式. 影像处理,提供影像翻图.缩放.移动.透镜.反相.旋转.截 ...
- String类的三种常见构造方法
1.根据构造方法创建字符串对象 1.public String() 创建一个空字符串,里面不包含任何内容 2.public String(char[] chs) 创建一个字符数组,将其拼接成字符串对象 ...
- Static Timing Analysis Basics
Preface This note only introduce the essential concepts about Static Timing Analysis, which not cont ...
- 技术博客:如何构建AI模拟面试系统(附完整GitHub代码)
引言:当董明珠.雷军.马斯克和特朗普成为你的面试官 在当今竞争激烈的求职市场中,模拟面试系统正成为开发者提升竞争力的秘密武器.但传统的模拟面试太过平淡,于是我开发了一个多风格AI面试官系统,让你可以体 ...
- 解决VSCODE进行C代码编辑时结构体成员不可见或不提示的问题
在使用VSCODE进行C代码编辑时,结构体成员有时可见,光标放到成员上时,系统会提示结构体成员对应的注释信息,但是有时候却不行. 经过测试,发现有如下规律:以test.c test.h include ...
- Java+Appium+Junit实现app自动化demo
1.新建maven工程和引入库 步骤参考https://www.cnblogs.com/wanyuan/p/16408758.html 2.编写代码 代码如下: import org.junit.Af ...