将纯真IP数据库的IP地址转换成数据库格式
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、最后导出为自己需要的格式。