IP问问,是款基于IP位置的产品,与各大巨头提供的IP库类似,但也是不同,准确率是一方面。
为什么不使用 Navicat或其他导入工具,因为,基于文件导入是最快的。
1、进入命令行
mysql -uroot -p123456 --local-infile=1
远程Linux:
mysql -h un.cc -uroot -p123456 --local-infile=1
参数 –local-infile=1,目的在于让 MYSQL 支持文件导入
1.1 创建数据库
CREATE DATABASE IF NOT EXISTS ip DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
1.2 创建表结构
DROP TABLE IF EXISTS `ip`.`ip`; CREATE TABLE `ip`.`ip` ( `id` int(11) unsigned NOT NULL COMMENT 'id', `minip` int(11) unsigned DEFAULT NULL COMMENT 'IP块最小端IP', `maxip` int(11) unsigned DEFAULT NULL COMMENT 'IP块最大端IP', `continent` varchar(16) DEFAULT NULL COMMENT '大洲,包含七大洲和BOGONS', `areacode` varchar(4) DEFAULT NULL COMMENT '国家编码', `adcode` varchar(10) DEFAULT NULL COMMENT '行政区划码', `country` varchar(50) DEFAULT NULL COMMENT '国家', `province` varchar(100) DEFAULT NULL COMMENT '省份', `city` varchar(100) DEFAULT NULL COMMENT '城市', `district` varchar(100) DEFAULT NULL COMMENT '区县', `bd_lon` varchar(12) DEFAULT NULL COMMENT 'BD09坐标系经度', `bd_lat` varchar(12) DEFAULT NULL COMMENT 'BD09坐标系纬度', `wgs_lon` varchar(12) DEFAULT NULL COMMENT 'WGS09坐标系经度', `wgs_lat` varchar(12) DEFAULT NULL COMMENT 'WGS09坐标系纬度', `radius` varchar(10) DEFAULT NULL COMMENT '区域半径', `scene` varchar(10) DEFAULT NULL COMMENT '应用场景', `accuracy` varchar(10) DEFAULT NULL COMMENT '地理位置精度', `owner` varchar(200) DEFAULT NULL COMMENT 'IP拥有者名称', PRIMARY KEY (`id`), KEY `idx_minip_maxip` (`minip`,`maxip`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、执行导入命令
LOAD DATA LOCAL INFILE 'E:/Downloads/IP_trial_2018M04_single_WGS84.txt' INTO TABLE `ip`.`ip` character set utf8 FIELDS TERMINATED BY '\t' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;
特别说明:
若文本文件需要使用WinSCP等工具上传到Linux(或Mac系统),可能会自动将Windows系统的换行符“\r\n”自动转换成Linix系统的换行符“\n”(或Mac系统的换行符“\r”)。
如果导入出错,需要将语句中的“LINES TERMINATED BY ‘\r\n’”替换成“LINES TERMINATED BY ‘\n’”(Linux)(或者“LINES TERMINATED BY ‘\r’”)(Mac)即可。
其中 ‘E:/Downloads/IP_trial_2018M04_single_WGS84.txt’ INTO TABLE `ip`.`ip`
分别设置 待导入文件路径及导向哪个库,哪个表。
导入完成后,显示类似:
Query OK, 16134714 rows affected (6 min 21.29 sec)
Records: 16134714 Deleted: 0 Skipped: 0 Warnings: 0
3、检验为 4294967296
SELECT SUM(maxip-minip+1) FROM `ip`.`ip`;
# 查询结果等于 4294967296 ,则为全量 IP;若不等,则不是全量IP,请检查确认或重新导入。
4、示例查询
SELECT * FROM `ip`.`ip` WHERE minip <= INET_ATON('222.222.222.222') ORDER BY minip DESC LIMIT 1;
至此,完成导入。