五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網 > 365文章 > 珊瑚蟲IP數(shù)據(jù)庫轉 SQL 2005 純真IP轉sql

珊瑚蟲IP數(shù)據(jù)庫轉 SQL 2005 純真IP轉sql

文章來源:365jz.com     點擊數(shù):977    更新時間:2009-09-16 12:01   參與評論
在幻想曲BLOG上看到不少朋友說,最近服務器上的IP數(shù)據(jù)好像不是很準確,于是重新做了一個新的,不少朋友可能需要這個數(shù)據(jù)庫,因為文件太大的緣故,所以直接提供快速轉換方法。

首先需要準備:

  • 最新的珊瑚蟲IP數(shù)據(jù)庫 http://update.cz88.net/soft/qqwry.rar
  • Microsoft Office Access 2003
  • EiditPlus
  • MS SQL2005


1.然后打開珊瑚蟲IP數(shù)據(jù)庫自帶的 ShowIP.exe,選擇解壓,另存一個TXT文件:


2.用EiditPlus打開這個文本拖動到最后幾行,刪除多余的東西(千萬別試圖用默認的文本編輯器打開,內存小的話你會死的很慘):


3.打開Access(為什么不直接到SQL里面導入數(shù)據(jù)呢?因為會出現(xiàn)文本格式錯誤,所以先曲線救國吧):


4.選擇剛才解壓出來的文本文件:


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






7.打開MS SQL2005,新建一個數(shù)據(jù)庫,名字自己定,以下代碼都使用[BasName]代替你新建數(shù)據(jù)庫名稱。

8.繼續(xù)如下操作:




完成執(zhí)行下面的存儲過程:
-- 建立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

這一步你可以自己按照你的情況來做,我是為了加快數(shù)據(jù)庫索引的速度,所以將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](180NULL,
    
[endip] [numeric](180NULL,
    
[country] [nvarchar](50NULL,
    
[local] [nvarchar](200NULL
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'')

-- 將地區(qū)提出
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

Tag標簽: 珊瑚蟲IP,數(shù)據(jù)庫,SQL2000,SQL2005,純真IP,sql

如對本文有疑問,請?zhí)峤坏浇涣髡搲?,廣大熱心網友會為你解答?。?點擊進入論壇

您可能感興趣的文章:

發(fā)表評論 (977人查看,0條評論)
請自覺遵守互聯(lián)網相關的政策法規(guī),嚴禁發(fā)布色情、暴力、反動的言論。
昵稱:
最新評論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學習

業(yè)務咨詢

· 技術支持
· 服務時間:9:00-18:00
365建站網二維碼

Powered by 365建站網 RSS地圖 HTML地圖

copyright © 2013-2024 版權所有 鄂ICP備17013400號