![]() |
|
||||||||||||||
| | 网站首页 | 电脑技术 | 免费资源 | 文章中心 | 下载中心 | 图片中心 | | ||
|
||
|
|||||
| 珊瑚虫IP数据库快速转MS SQL2005 | |||||
作者:未知 电脑技术来源:网络 点击数: 更新时间:2008-1-12 ![]() |
|||||
|
首先需要准备: 最新的珊瑚虫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: -- 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 程序代码-- 建立十进制新表 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全部转换为十进制,存到一个新表里面。 程序代码-- 格式化省份 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 |
|||||
| 电脑技术录入:lcsnow 责任编辑:lcsnow | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 没有相关电脑技术 |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|