珊瑚虫IP数据库转 SQL 2005 纯真IP转sql

2023-11-29 09:40

本文主要是介绍珊瑚虫IP数据库转 SQL 2005 纯真IP转sql,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在幻想曲BLOG上看到不少朋友说,最近服务器上的IP数据好像不是很准确,于是重新做了一个新的,不少朋友可能需要这个数据库,因为文件太大的缘故,所以直接提供快速转换方法。

首先需要准备:

  • 最新的珊瑚虫IP数据库 http://update.cz88.net/soft/qqwry.rar
  • Microsoft Office Access 2003
  • EiditPlus
  • MS SQL2005


1.然后打开珊瑚虫IP数据库自带的 ShowIP.exe,选择解压,另存一个TXT文件:


2.用EiditPlus打开这个文本拖动到最后几行,删除多余的东西(千万别试图用默认的文本编辑器打开,内存小的话你会死的很惨):


3.打开Access(为什么不直接到SQL里面导入数据呢?因为会出现文本格式错误,所以先曲线救国吧):


4.选择刚才解压出来的文本文件:


5.按下面操作,不做提示的直接下一步:






7.打开MS SQL2005,新建一个数据库,名字自己定,以下代码都使用[BasName]代替你新建数据库名称。

8.继续如下操作:




完成执行下面的存储过程:
--  建立IP转换到十进制方法
USE   [ BasName ]
GO
/* ***** 对象:  UserDefinedFunction [dbo].[X16ToDe]    脚本日期: 09/19/2007 13:56:15 ***** */
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO

--  =============================================
--
 Author:        <Author,,Name>
--
 Create date: <Create Date, ,>
--
 Description:    转换IP为十进制
--
 =============================================
Create   FUNCTION   [ dbo ] . [ X16ToDe ]
(
    
@Old_IP   nvarchar ( 15 )
)
RETURNS  numeric
AS
BEGIN
    
DECLARE
        
@CharIndex   INT ,
        
@CurrPoint   INT ,
        
@SingleValue   NVARCHAR ( 5 ),
        
@Cache  numeric

    
SET   @CharIndex   =   1
    
SET   @CurrPoint   =   CHARINDEX ( ' . ' , @Old_IP , @CharIndex )
    
SET   @SingleValue   =   SUBSTRING ( @Old_IP , @CharIndex , @CurrPoint   -   @CharIndex )
    
SET   @Cache   =   cast ( @SingleValue   as  numeric) * 16777216

    
SET   @CharIndex   =   @CurrPoint   +   1
    
SET   @CurrPoint   =   CHARINDEX ( ' . ' , @Old_IP , @CharIndex )
    
SET   @SingleValue   =   SUBSTRING ( @Old_IP , @CharIndex , @CurrPoint   -   @CharIndex )
    
SET   @Cache   =   @Cache   +   cast ( @SingleValue   as  numeric) * 65536

    
SET   @CharIndex   =   @CurrPoint   +   1
    
SET   @CurrPoint   =   CHARINDEX ( ' . ' , @Old_IP , @CharIndex )
    
SET   @SingleValue   =   SUBSTRING ( @Old_IP , @CharIndex , @CurrPoint   -   @CharIndex )
    
SET   @Cache   =   @Cache   +   cast ( @SingleValue   as  numeric) * 256

    
SET   @CharIndex   =   @CurrPoint   +   1
    
SET   @SingleValue   =   SUBSTRING ( @Old_IP , @CharIndex , len ( @Old_IP ) -   @CharIndex   +   1 )
    
SET   @Cache   =   @Cache   +   cast ( @SingleValue   as  numeric)
    
    
RETURN   @Cache ;
END

这一步你可以自己按照你的情况来做,我是为了加快数据库索引的速度,所以将IP全部转换为十进制,存到一个新表里面。
--  建立十进制新表
USE   [ BasName ]
GO
/* ***** 对象:  Table [dbo].[IP_Real]    脚本日期: 09/19/2007 14:01:31 ***** */
SET  ANSI_NULLS  ON
GO
SET  QUOTED_IDENTIFIER  ON
GO
Create   TABLE   [ dbo ] . [ IP_Real ] (
    
[ startip ]   [ numeric ] ( 18 0 NULL ,
    
[ endip ]   [ numeric ] ( 18 0 NULL ,
    
[ country ]   [ nvarchar ] ( 50 NULL ,
    
[ local ]   [ nvarchar ] ( 200 NULL
ON   [ PRIMARY ]


--  格式化省份
Update   [ BasName ] . [ dbo ] . [ IP ]
   
SET   [ country ]   =   replace ( [ country ] ,N ' ' ,N ' 省  ' )

--  删除CZ88.NET
Update   [ BasName ] . [ dbo ] . [ IP ]
   
SET   [ country ]   =   replace ( [ country ] ,N ' CZ88.NET ' ,N '' )

--  将地区提出
Update   [ BasName ] . [ dbo ] . [ IP ]
   
SET   [ local ]   =   SUBSTRING ( [ country ] , CHARINDEX ( '   ' , [ country ] , 1 ) + 1 , len ( [ country ] ))

--  存为国家或省份
Update   [ BasName ] . [ dbo ] . [ IP ]
   
SET   [ country ]   =   SUBSTRING ( [ country ] , 0 , CHARINDEX ( '   ' , [ country ] , 1 ))

--  去处前后导空格
Update   [ BasName ] . [ dbo ] . [ IP ]
   
SET   [ country ]   =   Rtrim ( Ltrim ( [ country ] ))
      ,
[ local ]   =   Rtrim ( Ltrim ( [ local ] ))

--  转换IP为十进制,并写入新表
Insert   INTO   [ BasName ] . [ dbo ] . [ IP_Real ]
           (
[ startip ]
           ,
[ endip ]
           ,
[ country ]
           ,
[ local ] )
Select  dbo.X16ToDe( [ startip ] )
      ,dbo.X16ToDe(
[ endip ] )
      ,
[ country ]
      ,
[ local ]
  
FROM   [ BasName ] . [ dbo ] . [ IP ]
order   by   [ startip ]   ASC
最后测试一下看看:
--  测试
DECLARE   @IPNumber  numeric
set   @IPNumber   =  dbo.X16ToDe( ' 219.140.31.91 ' )

Select   [ startip ]
      ,
[ endip ]
      ,
[ country ]
      ,
[ local ]
  
FROM   [ BasName ] . [ dbo ] . [ IP_Real ]
Where   [ startip ]   <=   @IPNumber   and   [ endip ]   >=   @IPNumber

转载于:https://www.cnblogs.com/DavidLc/archive/2008/04/05/1138676.html

这篇关于珊瑚虫IP数据库转 SQL 2005 纯真IP转sql的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/432339

相关文章

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)

《SpringBoot使用Jasypt对YML文件配置内容加密的方法(数据库密码加密)》本文介绍了如何在SpringBoot项目中使用Jasypt对application.yml文件中的敏感信息(如数... 目录SpringBoot使用Jasypt对YML文件配置内容进行加密(例:数据库密码加密)前言一、J

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

MySQL表锁、页面锁和行锁的作用及其优缺点对比分析

《MySQL表锁、页面锁和行锁的作用及其优缺点对比分析》MySQL中的表锁、页面锁和行锁各有特点,适用于不同的场景,表锁锁定整个表,适用于批量操作和MyISAM存储引擎,页面锁锁定数据页,适用于旧版本... 目录1. 表锁(Table Lock)2. 页面锁(Page Lock)3. 行锁(Row Lock

MySQL zip安装包配置教程

《MySQLzip安装包配置教程》这篇文章详细介绍了如何使用zip安装包在Windows11上安装MySQL8.0,包括下载、解压、配置环境变量、初始化数据库、安装服务以及更改密码等步骤,感兴趣的朋... 目录mysql zip安装包配置教程1、下载zip安装包:2、安装2.1 解压zip包到安装目录2.2