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

相关文章

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

Go 1.23中Timer无buffer的实现方式详解

《Go1.23中Timer无buffer的实现方式详解》在Go1.23中,Timer的实现通常是通过time包提供的time.Timer类型来实现的,本文主要介绍了Go1.23中Timer无buff... 目录Timer 的基本实现无缓冲区的实现自定义无缓冲 Timer 实现更复杂的 Timer 实现总结在

Vue中动态权限到按钮的完整实现方案详解

《Vue中动态权限到按钮的完整实现方案详解》这篇文章主要为大家详细介绍了Vue如何在现有方案的基础上加入对路由的增、删、改、查权限控制,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、数据库设计扩展1.1 修改路由表(routes)1.2 修改角色与路由权限表(role_routes)二、后端接口设计

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

MySQL InnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据

《MySQLInnoDB引擎ibdata文件损坏/删除后使用frm和ibd文件恢复数据》mysql的ibdata文件被误删、被恶意修改,没有从库和备份数据的情况下的数据恢复,不能保证数据库所有表数据... 参考:mysql Innodb表空间卸载、迁移、装载的使用方法注意!此方法只适用于innodb_fi

mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据

《mysql通过frm和ibd文件恢复表_mysql5.7根据.frm和.ibd文件恢复表结构和数据》文章主要介绍了如何从.frm和.ibd文件恢复MySQLInnoDB表结构和数据,需要的朋友可以参... 目录一、恢复表结构二、恢复表数据补充方法一、恢复表结构(从 .frm 文件)方法 1:使用 mysq

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.