ip导入sqlserver数据库

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","'
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值