前几天在博客园首页看到这个2000W数据的消息,刚好这个学期正在SQL入门,加上好奇心的驱使,把这个下载下来。

一个是600多M的CSV文件,还有一个是1.7G的SQL Server的备份文件,解压后都接近8G了,试着在sql server2000上导入一下,貌似直接就说太多了……汗

所以,只好先看看这个CSV文件了,这个解压后也接近2G了,一般的文本编辑器似乎都没辙了,excel之类的东西更是别指望了,好吧,我先承认我的电脑很差,80G的硬盘,并口,ATA/133……呃

我用HEX编辑软件查看了一下,居然是UTF8的编码,那就先用Python简单写段查询,看看有没有村里人中枪吧,哈哈

# -*- coding: utf-8 -*-
def cn(s):
return s.decode("utf8").encode("gbk") try:
fp=file("2000w.csv","r")
while 1:
fp.seek(0)
word=raw_input(cn("查询关键词:"))
fout=file(word+".txt","w")
#sline=int(raw_input(cn("起始行:")))
if word=='exit':break
word=word.decode("gbk").encode("utf8")
i=0
print "start..."
while 1:
i=i+1
datl=fp.readline()
if datl=="":break
if i%10000==0:print i
#if i<sline:continue
if datl.find(word)>0:
tstr=cn("【Line:%d】%s"%(i,datl))
print tstr,
print>>fout,tstr,
#pmt=raw_input(cn("是否继续(y/n):"))
#if pmt=='n':break
print "end"
fout.close()
finally:
fp.close()
fout.close()

顺便把查询记录也保存为一个文件,结果……似乎没发现认识的人,看来他们的保密措施做的不错,哈哈。

终归还是为了练习SQL的,所以还是要将数据导入到sql server先。

在此吐槽一下微软的东西,安装包越做越大,装个软件好几个小时,记得去年装个VS2012Express居然花了整整一上午!!!

所以,对于我这种偏执狂以及标准穷屌丝来说,VC用6.0,sql server用2000的,还是云端版,才几十M,入门学习足够了,哈哈。

回正题,我试着将CSV文件导入到SQL Server里去,发现编码方式只能选择ANSI或者Unicode之类的,选Unicode后英文字符都不正确了,ANSI的话中文肯定乱码,所以还是用Python将编码转成UTF8,插了下资料,UTF8的文本文件有个3字节的文件头,EFBBBF,我直接把它忽略了,哈哈

#MAXLIST=1000

frp=file("2000w_utf8.csv","r")
fwp=file("2000w_ansi.csv","w")
i=1
dat=frp.readline()
fwp.write(dat[3:])
try:
while 1:
i=i+1
if i%10000==0:print i
dat=frp.readline()
if dat=="":break
#if i>MAXLIST:break
else:
try:
dat_w=dat.decode("utf8").encode("gbk")
except UnicodeEncodeError:
print "gbk encode error"
fwp.write(dat)
fwp.write(dat_w)
except Exception,e:
print e
finally:
frp.close()
fwp.close()
print "ok"

这样,导入SQLServer就正确了。

PS:我的数据似乎只有1200多万,没有2000W啊,不知是不是没有下载到完整版,嘿嘿

关于2000W数据的更多相关文章

  1. 某酒店2000W数据

    某酒店2000W数据 2000万开房信息 [某酒店2000w数据 ct2000(解压密码:sjisauisa是就数据8很舒适好sjjss).rar] 国内安全漏洞监测平台乌云(WooYun.org)近 ...

  2. 2000w数据,redis中只存放20w的数据,如何保证redis中的数据都是热点数据

    redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略. redis 提供 6种数据淘汰策略:voltile-lru:从已设置过期时间的数据集(server.db[i].expires) ...

  3. 2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据

    redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略.redis 提供 6种数据淘汰策略: voltile-lru:从已设置过期时间的数据集(server.db[i].expires) ...

  4. MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如 何保证 redis 中的数据都是热点数据?

    Redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略. 相关知识:Redis 提供 6 种数据淘汰策略: volatile-lru:从已设置过期时间的数据集(server.db[i]. ...

  5. 2000W条数据,加入全文检索的总结

    一) 前期准备测试: 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息 ...

  6. 【数据库】_由2000W多条开房数据引发的思考、实践----给在校生的一个真实【练耙场】,同学们,来开始一次伟大的尝试吧。

      ×   缘起---闲逛博客园 前几天的时候,在某一QQ群看到一条消息“XXX酒店开房XXXBTXX迅雷BT下载”,当时是一目十行的心态浏览,目光掠过时, 第一反应我想多了~以为是XX种子(你懂的~ ...

  7. 借网上盛传2000w记录介绍多进程处理

    2000w的数据在网上搞得沸沸扬扬,作为技术宅的我们也来凑凑热闹.据了解网上有两个版一个是数据库文件另一个是CSV文件的,前者大小有好几个G后者才几百M.对于不是土豪的我们当然下载几百M的.至于在哪下 ...

  8. redis之数据操作详解

    redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set ...

  9. Mysql学习总结(35)——Mysql两千万数据优化及迁移

    最近有一张2000W条记录的数据表需要优化和迁移.2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升.不过这些数据有大量的冗余字段和错误信息,极不 ...

随机推荐

  1. jQuery避免$符和其他JS库冲突的方法对比

    1.如果jquery库在第三方库之后引用.这个时候jquery库会占用$. 解决办法:剔除$符号的使用权. <script type="text/javascript" sr ...

  2. poj 1780 Code

    //题目描述:KEY公司开发出一种新的保险箱.要打开保险箱,不需要钥匙,但需要输入一个正确的.由n位数字组成的编码.这种保险箱有几种类型,从给小孩子玩的玩具(2位数字编码)到军用型的保险箱(6位数字编 ...

  3. CMake实践(1)

    简介: 目录结构t1/main.cpp; t1/CMakeLists.txt 说明: main.cpp: #include <stdio.h> int main(){    printf( ...

  4. 11g 重建EM 报ORA-20001: SYSMAN already exists

    今天在安装11g(11.1.0.7.0)数据库之后,通过emca -config dbcontrol db -repos create 命令手工创建em的时候报错,查看日志后发现有以下错误 CONFI ...

  5. IOS 本地通知UILocalNotification

    //发送通知    UILocalNotification *notification=[[UILocalNotification alloc] init];       if (notificati ...

  6. C++第一章概述

    1:C++主要是对于C的继承性做的相当的出色,主要扩充在于程序员可以自己定义自己的数据结构,用数据结构去描述日常生活中的事务,而不是C语言中当当仅有的Struct数据类型等等 2: 每一种语言都有自己 ...

  7. hashtable,hashMap,vector和ArrayList

    关于vector,ArrayList,hashMap和hashtable之间的区别 vector和ArrayList:  线程方面:  vector是旧的,是线程安全的  ArrayList是java ...

  8. 数往知来C#面向对象准备〈二〉

    面向对象(OOP→Object-Oriented Programming) 1.什么是面向对象? 一种分析问题的方式. 2.面向对象三大特征: 封装(隐蔽代码实现/复用/修改方便).继承.多态. 3. ...

  9. BestCoder Round #75 解题报告

    King's Cake [思路] 递推 公式:f(n,m)=f(max(m,n-m),min(m,n-m))+1,n>m [代码] #include<cstdio> #include ...

  10. Linux 中 x86 的内联汇编

    工程中需要用到内联汇编,找到一篇不错的文章,趁机学习下. 原文地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/ 如果 ...