zoukankan      html  css  js  c++  java
  • 纯真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导入

  • 相关阅读:
    5.scala中的对象
    4.scala中的类
    第八章 前端框架
    第六章 用户管理
    第五章 权限验证
    第四章 功能初始化
    第三章 项目结构
    第二章 基于二进制进行权限管理的理论知识
    第一章 权限管理DEMO简介
    NopCommerce源代码分析之用户验证和权限管理
  • 原文地址:https://www.cnblogs.com/xdao/p/ip_mysql.html
Copyright © 2011-2022 走看看