1.下载QQ纯真ip数据库.
2.执行ShowIP.exe,数据解压至ip.txt中
3.打开ip.txt,替换所有空格为"|"
4.对于表中只有国家没有城市的记录,补齐城市的名称方法为
替换文本5|CZ88.NET为5|CZ88.NET|CZ88.NET
4.在数据库中建临时ip表iptable,字段为
Startip varchar(50)--起始ip
Endip varchar(50)--终止ip
country varchar(50)--国家
city varchar(50)--城市
5.在sqlserver查询中执行EXEC master..xp_cmdshell 'bcp test.dbo.testtable in e:/ip.txt -c -q -U "sa" -P "pwd" -t"|"' 将数据导入表中
6.此时如需要分离省份与具体城市,建立二字段
s_province varchar(50)--存储省份名称
city2 varchar(50)--存储城市名称
7.在查询分析器中执行语句
update iptable set city2=right(Country,len(Country)-charindex('省',Country)),s_province=left(Country,charindex('省',Country)) where charindex('省',Country)>0
更新新的省份及城市ip字段
8.计算ip为256位数字.
(1)建字段 stipcompute decimal,edipcompute decimal
(2)在sqlserver中准备函数
CREATE FUNCTION [dbo].[FunCmpIp] (@startip varchar(40))
RETURNS decimal
AS
BEGIN
declare @i int --标记ip地址中的"."符号位置
declare @pw int --2进制的幂值
declare @ipvalue decimal--计算ip的二进制值
set @ipvalue=0
set @pw=3
--set @startip='192.168.0.1'
set @i=charindex('.',@startip)
while @i>=1
begin
--insert @temp values(replace(left(@startip,@i-1),' ',''))
set @ipvalue=@ipvalue+CAST(replace(left(@startip,@i-1),' ','') as decimal)*POWER(256,@pw)
set @startip=substring(@startip,@i+1,len(@startip)-@i)
set @i=charindex('.',@startip)
set @pw=@pw-1
end
set @ipvalue=@ipvalue+CAST(@startip as int)
return @ipvalue
END;
(3)
EXEC master..xp_cmdshell 'bcp "select Startip,Endip,s_province,city2,stipcompute,edipcompute from callbook_dw.dbo.iptable1" queryout e:/ip.txt -c -U"sa" -P"pwd" -t","'
2.执行ShowIP.exe,数据解压至ip.txt中
3.打开ip.txt,替换所有空格为"|"
4.对于表中只有国家没有城市的记录,补齐城市的名称方法为
替换文本5|CZ88.NET为5|CZ88.NET|CZ88.NET
4.在数据库中建临时ip表iptable,字段为
Startip varchar(50)--起始ip
Endip varchar(50)--终止ip
country varchar(50)--国家
city varchar(50)--城市
5.在sqlserver查询中执行EXEC master..xp_cmdshell 'bcp test.dbo.testtable in e:/ip.txt -c -q -U "sa" -P "pwd" -t"|"' 将数据导入表中
6.此时如需要分离省份与具体城市,建立二字段
s_province varchar(50)--存储省份名称
city2 varchar(50)--存储城市名称
7.在查询分析器中执行语句
update iptable set city2=right(Country,len(Country)-charindex('省',Country)),s_province=left(Country,charindex('省',Country)) where charindex('省',Country)>0
更新新的省份及城市ip字段
8.计算ip为256位数字.
(1)建字段 stipcompute decimal,edipcompute decimal
(2)在sqlserver中准备函数
CREATE FUNCTION [dbo].[FunCmpIp] (@startip varchar(40))
RETURNS decimal
AS
BEGIN
declare @i int --标记ip地址中的"."符号位置
declare @pw int --2进制的幂值
declare @ipvalue decimal--计算ip的二进制值
set @ipvalue=0
set @pw=3
--set @startip='192.168.0.1'
set @i=charindex('.',@startip)
while @i>=1
begin
--insert @temp values(replace(left(@startip,@i-1),' ',''))
set @ipvalue=@ipvalue+CAST(replace(left(@startip,@i-1),' ','') as decimal)*POWER(256,@pw)
set @startip=substring(@startip,@i+1,len(@startip)-@i)
set @i=charindex('.',@startip)
set @pw=@pw-1
end
set @ipvalue=@ipvalue+CAST(@startip as int)
return @ipvalue
END;
(3)
EXEC master..xp_cmdshell 'bcp "select Startip,Endip,s_province,city2,stipcompute,edipcompute from callbook_dw.dbo.iptable1" queryout e:/ip.txt -c -U"sa" -P"pwd" -t","'