网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 天空资源网 >> 电脑技术 >> 编程技术 >> ASP >> 电脑技术正文
  [组图]珊瑚虫IP数据库快速转MS SQL2005           ★★★ 【字体:
珊瑚虫IP数据库快速转MS SQL2005
作者:未知    电脑技术来源:网络    点击数:    更新时间:2008-1-12    
在幻想曲BLOG上看到不少朋友说,最近服务器上的IP数据好像不是很准确,于是重新做了一个新的,不少朋友可能需要这个数据库,因为文件太大的缘故,所以直接提供快速转换方法。

首先需要准备:
最新的珊瑚虫IP数据库 http://update.cz88.net/soft/QQwry.rar
Microsoft Office Access 2003
EiditPlus
MS SQL2005


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

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

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

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

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

photo

photo

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

8.继续如下操作:
photo

photo

完成执行下面的存储过程:

photo 程序代码
-- 建立IP转换到十进制方法
USE [BasName]
GO
/****** 对象: UserDefinedFunction [dbo].[X16ToDe] 脚本日期: 09/19/2007 13:56:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Author:
-- 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


photo 程序代码
-- 建立十进制新表
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]


这一步你可以自己按照你的情况来做,我是为了加快数据库索引的速度,所以将IP全部转换为十进制,存到一个新表里面。

photo 程序代码
-- 格式化省份
Update [BasName].[dbo].[IP]
SET [country] = replace([country],N省,N省 )

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

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

-- 存为国家或省份
Update [BasName].[dbo].[IP]
SET [country] = SUBSTRING([count

[1] [2] 下一页

电脑技术录入:lcsnow    责任编辑:lcsnow 
  • 上一篇电脑技术:

  • 下一篇电脑技术: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关电脑技术
    Copyright @ 2006 天空资源网 All Rights Reserved
    Designed by: lcsnow E-mail: admin#seesky.net
    皖ICP备05005479号