• 纯真ip导入mysql


    先从纯真官网右侧下载ip数据库


    更新后,点击解压,可以把数据库保存为txt格式

    格式化数据

    ip格式如下图

    可见并不是很规范,而且最底部字段数也不一致

    先用正则表达式,查找替换一下
    (d+.d+.d+.d+) *(d+.d+.d+.d+) *([w()]+) (.)
    $1$$2$$3$$4 表示用$做分割符,因为其它符号在正文中都有了
    最后变成这个样子

    另外有几列只有"CZ88"或".NET",用全词匹配把它们都替换为CZ88.NET,统一一下内容

    转换ip格式

    把字符串形式的ip转换为long int的数字
    php代码如下

    <?php
    
    function convert($ipFile,$ipOutFile){
        $inHandle = fopen($ipFile, "r")
        $outHandle = fopen($ipOutFile, "w");
    
        if(!$inHandle){
            echo "open $ipFile error";
            return;
        }
        if(!$outHandle){
            echo "open $ipOutFile error";
            return;
        }
    
        while ( ($line = fgets($inHandle)) !== false ) {
           
            $data = explode('$', $line);
            $data[0] =  sprintf('%u',ip2long($data[0]));
            $data[1] =  sprintf('%u',ip2long($data[1]));
    
            $newline = implode('$', $data);
            fputs($outHandle,$newline);
        }
        
        fclose($inHandle);
        fclose($outHandle);
    }
    

    这里用sprintf('%u',ip2long($data[0]));的原因是,ip2long会超过int的最大值,变成负数。

    创建mysql数据库

    CREATE TABLE `ip_data` (
    `ipstart`  int(10) UNSIGNED NOT NULL ,
    `ipend`  int(10) UNSIGNED NOT NULL ,
    `area`  varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    `location`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
    PRIMARY KEY (`ipstart`),
    INDEX `ip` (`ipstart`, `ipend`) USING BTREE 
    )
    ENGINE=InnoDB
    DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
    ROW_FORMAT=COMPACT
    ;
    

    导入

    可以用navigat for mysql导入

  • 相关阅读:
    leetcode 77 组合
    leetcode 40组合总和 II
    leetcode 216 组合总和III
    弹性伸缩 AS(Auto Scaling)
    弹性计算服务(Elastic Compute Service) / 云服务器 ECS
    云计算概述
    Zabbix Proxy 分布式监控
    Zabbix 自动发现 & 自动注册
    LVS-DR 模式
    GoAccess 监控工具
  • 原文地址:https://www.cnblogs.com/xdao/p/ip_mysql.html
Copyright © 2020-2023  润新知