未知 [信息技术] 将纯真IP数据库的IP地址转换成数据库格式     阅读:5940  

将纯真IP数据库的IP地址转换成数据库格式
作者: 郭海运 编辑: 海韵 发布日期: 2006-09-30 00:00:00 点击量: 5940 来源: haiyun.net

1、将CZIP数据库用其自带的软件生成文本文档

2、将文本文档导入到SQL SERVER 生成有个只有一列的数据库 列为COL001

3、替换该列中所有两个空格的为一个空格符号,多次循环,直到所有的有空格的地方都只有一个空格符号为止。

4、将每列数据的后面加上一个空格做为尾,可能加不上,此时可以加一个 ' *',以便与第5步的时候可以正常运行而不出错误
 update ipdata set localarea = replace(localarea,' *','')

5、运行以下SQL语句即可以将该列分解为4个部分

 select
 substring(col001,0,charindex(' ',col001)),
 substring(col001,charindex(' ',col001)+1,charindex(' ',col001,charindex(' ',col001)+2)-charindex(' ',col001)-1),
 substring(col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1))+1,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1)+1))- charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1))-1),
 substring(col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1)+1))+1,200 )
  from czip

6、新建一个数据库用来接收生成的数据到一个新的库里面
 insert into ipdata (startip,endip,area,localarea)
 select
 substring(col001,0,charindex(' ',col001)),
 substring(col001,charindex(' ',col001)+1,charindex(' ',col001,charindex(' ',col001)+2)-charindex(' ',col001)-1),
 substring(col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1))+1,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1)+1))- charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1))-1),
 substring(col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001,charindex(' ',col001)+1)+1))+1,200 )
 from czip

7、替换里面的最后一列里面的' *'及CZ88.NET等字样

8、使用以下语句将IP地址的点分割形式变换成数字数据格式,完成对数据库的变更。

select

cast(substring(startip,0,charindex('.',startip)) as bigint) *256*256*256 +
cast(substring(startip,charindex('.',startip)+1,charindex('.',startip,charindex('.',startip)+2)-charindex('.',startip)-1) as bigint) * 256*256 +
cast(substring(startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1))+1,charindex('.',startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1)+1))- charindex('.',startip,charindex('.',startip,charindex('.',startip)+1))-1) as bigint) * 256 +
cast(substring(startip,charindex('.',startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1)+1))+1,200 ) as int) ,

cast(substring(endip,0,charindex('.',endip)) as bigint) *256*256*256 +
cast(substring(endip,charindex('.',endip)+1,charindex('.',endip,charindex('.',endip)+2)-charindex('.',endip)-1) as bigint) * 256*256 +
cast(substring(endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1))+1,charindex('.',endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1)+1))- charindex('.',endip,charindex('.',endip,charindex('.',endip)+1))-1) as bigint) * 256 +
cast(substring(endip,charindex('.',endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1)+1))+1,200 ) as int)

from ipdata

 

update ipdata
set startip =
cast(
cast(substring(startip,0,charindex('.',startip)) as bigint) *256*256*256 +
cast(substring(startip,charindex('.',startip)+1,charindex('.',startip,charindex('.',startip)+2)-charindex('.',startip)-1) as bigint) * 256*256 +
cast(substring(startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1))+1,charindex('.',startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1)+1))- charindex('.',startip,charindex('.',startip,charindex('.',startip)+1))-1) as bigint) * 256 +
cast(substring(startip,charindex('.',startip,charindex('.',startip,charindex('.',startip,charindex('.',startip)+1)+1))+1,200 ) as int) as varchar(50)),

endip =
cast(

cast(substring(endip,0,charindex('.',endip)) as bigint) *256*256*256 +
cast(substring(endip,charindex('.',endip)+1,charindex('.',endip,charindex('.',endip)+2)-charindex('.',endip)-1) as bigint) * 256*256 +
cast(substring(endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1))+1,charindex('.',endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1)+1))- charindex('.',endip,charindex('.',endip,charindex('.',endip)+1))-1) as bigint) * 256 +
cast(substring(endip,charindex('.',endip,charindex('.',endip,charindex('.',endip,charindex('.',endip)+1)+1))+1,200 ) as int)

as varchar(50)
)


9、最后导出为自己需要的格式。

 


[ 海韵 于 2006-09-30 00:00:00  星期六   ]  
相关文章:

网友评论
正在加载评论...


免责申明 | 版权申明 | 联系我们 | 关于
Copyright © 2001-2025 Haiyun.Net All Rights Reserved
地址:深圳市南山区南油天安工业区1栋3楼 邮编:518000
有我可以帮您的吗?QQ:12457275  
粤ICP备05017321号-1