纯真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

相关文章

Python基础文件操作方法超详细讲解(详解版)

《Python基础文件操作方法超详细讲解(详解版)》文件就是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位,文件的核心操作就是读和写,:本文主要介绍Python基础文件操作方法超详细讲解的相... 目录一、文件操作1. 文件打开与关闭1.1 打开文件1.2 关闭文件2. 访问模式及说明二、文件读写1.

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

详解C++中类的大小决定因数

《详解C++中类的大小决定因数》类的大小受多个因素影响,主要包括成员变量、对齐方式、继承关系、虚函数表等,下面就来介绍一下,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 非静态数据成员示例:2. 数据对齐(Padding)示例:3. 虚函数(vtable 指针)示例:4. 继承普通继承虚继承5.

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同