利用纯真IP库建立mysql ip数据库

来源:互联网 发布:淘宝国际版官方网站 编辑:程序博客网 时间:2024/05/17 05:11

首先到http://www.cz88.net/  下载一个最新的ip库,安装ip库后会生成一个快捷方式,如下图所示:


点击打开后,出现下图界面:


点击解压,会生成一个20多兆的文本文件,打开或者下载一个UltraEdit打开,另存为utf-8的文本文档,这样可以防止出现乱码。在此之前我们要修改一下php.ini的配置,不然中途可能会出现一些错误

默认情况下:MySQL导入文件大小有限制的,最大为2M,所以当文件很大时候,直接无法导入,下面就这个问题的解决列举如下:

 在php.ini中修改相关参数:

 影响MySQL导入文件大小的参数有三个:

 memory_limit=128M,upload_max_filesize=2M,post_max_size=8M

我比较懒,直接将这三个都改成了128。

首先创建数据库

CREATE TABLE ip_data (     ipstart INT UNSIGNED NOT NULL,     ipend INT UNSIGNED NOT NULL,     region VARCHAR(50) NOT NULL,     address VARCHAR(100) NOT NULL,     PRIMARY KEY (ipstart, ipend)) TYPE = MyISAM;
首先在PhpMyAdmin里手动建一个名称为ip_data的数据库,然后插入上面的sql语句,一个名称为ip_data的表单就可以建好了

接着将下面的代码

<?phpfunction EncodeIp($strDotquadIp) { // 把点格式的ip地址转换成整数表示的ip地址     $arrIpSep = explode('.', $strDotquadIp);     if (count($arrIpSep) != 4) return 0;     $intIp = 0;         foreach ($arrIpSep as $k => $v) $intIp += (int)$v * pow(256, 3 - $k);     return $intIp;}$arrLines = file("ip".".txt");$intLen = 0;$i = 1;$resFile = fopen("ip".$i.".sql", "w");foreach ($arrLines as $k => $strLine) {     $arrElements = explode("||", addslashes($strLine));     $intIpStart = EncodeIp($arrElements[0]);     $intIpEnd = EncodeIp($arrElements[1]);     $j = 3;     $strAddress = "";     while ($arrElements[$j]) {         $strAddress .= " ".$arrElements[$j];         $j++;     }     $strSql = "INSERT INTO ip_data (ipstart, ipend, region, address) VALUES (".$intIpStart.", ".$intIpEnd.", '".trim($arrElements[2])."', '".trim($strAddress)."');\r\n";     fwrite($resFile, $strSql);     $intLen += strlen($strSql);     if ($intLen > 2097152) { // 当正在写入的sql文件超过2M时结束当前文件而开始写入新的sql文件         fclose($resFile);         $resFile = fopen("ip".(++$i).".sql", "w");         $intLen = 0;     }}?>
(以上参考文章打造MySQL版的最新IP数据库)

将代码另存为php格式文件,然后放在www文件中,运行,就可以得到27个sql文件了,然后在phpmyadmin中一个一个导入。

开始时,也准备只生成一个sql文件,奈何有50多兆,试了几次,导入时总是超时,还有一次死机了,最后只好老老实实分割成2M的文件一个一个导入,大家也可以写代码自动导入。


也可以到mysql命令行里用命令导入将50多兆的sql文件一次性导入:

首先输入密码进入数据库,然后use ip_data选择ip_data数据库问当前数据库,再输入source c:\ip_data.sql,导入开始,要持续一段时间,耐心等待


整个导入过称持续四十多分钟,导入数据436315条。


把上面要用到的软件和文件的下载地址贴出来,至于appsev套件我就不上传了:

http://115.com/file/be8d8dz7#ip_setup.exe  //纯真ip软件下载
http://115.com/file/e7zkhlfm#ipsql(1).zip          //sql文件下载,每个文件2M
http://115.com/file/be8d8abp#iptxt.zip         //TXT文件下载

http://115.com/file/anh74m0s#down.zip     //UltraEdit下载