纯真QQIP库导入到SQL Server详解

2024-08-29 23:18

本文主要是介绍纯真QQIP库导入到SQL Server详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

相信很多人都是需要通过用户的IP来确认用户是属于哪个区域的,最新的QQIP数据库纯真版20100515,里面的IP数据记录已经达到了:378448条。它收集了包括中国电信、中国移动、中国联通、长城宽带、聚友宽带等 ISP 的最新准确 IP 地址数据。包括最全的网吧数据。本来这个IP库的用意是在QQ上能显示对方的地理位置,在我们的程序中也偶尔有需要的时候,所以把它导入到我们的数据库中成为一张表是非常有必要的。

但是很多人会说这有什么难的呢?但是在实际的操作过程中出现了很多问题,比如:导入到数据库的时候报错;还有就是导入的记录后发现记录数有缺失;导入时无法用,;等字符来区分字段等。下面就让我来告诉你如何成功导入这378448条数据吧。 

 

步骤1

点击上面的下载地址,解压并运行ShowIP.exe,如下图所示

(图1:ShowIP.exe) 

 

步骤2

点击上面的【解压】按钮,保存文件为QQIP.txt

 

步骤3

到vim.org中下载gvim72.exe程序,这里为什么需要下载这个文件呢?因为如果使用SQL Server的导入功能导入文件QQIP.txt的话会报错,因为QQIP.txt文件打开一看感觉是使用了制表符\t来区分字段,但是你错了,无论是在SQL Server2000还是在SQL Server2005都无法识别得了,因为它是使用空格来调整的(见图2)。既然无法直接导入,那么我们该如何使用特殊字符来替换这些空格呢?使用SQL Server2000的特定长度也是无法很好的区分开字段。一般的文本工具,比如EMEditor就无法替换指定的空格,因为只能是全文替换,那么当字符是:“我 是 听风吹雨”,这这段字符中的空格也会给替换掉,而我们恰恰是不想见到这样的情况的。vim就可以替换一行中的几个空格。

 

(图2:导入QQIP.txt时无法识别列) 

 

步骤4

下载好gvim72.exe后当然是安装程序啦,安装完毕后打开双击gvim.exe进行操作。选择文件-打开,选择QQIP.txt文件,按住Shift+分号键就可以进行执行命令了,输入“%s/\s\+/$/ ”,按回车就会出现图3的效果,这就已经替换了两个字符之间的空格了,一共重复输入3次。 把最下面的字符“IP数据库共有数据$:$378448$条”删除,存盘退出:wq。详解:QQIP.txt有4列。分别是起始ip,结束ip,地区,说明。列之间用不等数量的空格间隔。为了将此文本文件到入到SQL Server,需要处理掉这些空格。但是只能处理掉前3列的空格,最后一列中的空格要保留。vi中输入的命令意思是,把每一行第一个和其连续的空格替换成字符'$'。

 

(图3:第一次执行命令后的效果) 

 

步骤5 

这样就有了一个全新的QQIP.txt了,那么接下来就是导入到数据库中了,因为数据中有些是没有说明这一列的,所以使用SQL Server2000的【其它】中设置为“$”来分隔列,是没有办法做好的。所以这里我们先把整个行做了一列导入到数据中后再使用SQL进行字符串分隔。需要注意的是图5中设置字段长度为500,如果你没有设置导致报错,那么你就要先去数据库中删除这个表,之后再设置字段长度为500并导出,如果你没有删除表,那么会一直报错,因为已经有了这样一个表了,即使最后报错了。

这篇关于纯真QQIP库导入到SQL Server详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119126

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

k8s按需创建PV和使用PVC详解

《k8s按需创建PV和使用PVC详解》Kubernetes中,PV和PVC用于管理持久存储,StorageClass实现动态PV分配,PVC声明存储需求并绑定PV,通过kubectl验证状态,注意回收... 目录1.按需创建 PV(使用 StorageClass)创建 StorageClass2.创建 PV

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

Redis 基本数据类型和使用详解

《Redis基本数据类型和使用详解》String是Redis最基本的数据类型,一个键对应一个值,它的功能十分强大,可以存储字符串、整数、浮点数等多种数据格式,本文给大家介绍Redis基本数据类型和... 目录一、Redis 入门介绍二、Redis 的五大基本数据类型2.1 String 类型2.2 Hash

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input