IP问问(ipplus360)离线库导入

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 支持文件导入

关于命令load data local infile

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;

至此,完成导入。