关于2000W数据

摘要:
几天前,我在博客公园的主页上看到了2000W数据的消息。碰巧这学期我开始学习SQL。出于好奇,我下载了它。一个是600兆字节的CSV文件,另一个是1.7G的SQL Server备份文件。减压后接近8G。尝试在sqlserver2000上导入它。直接说似乎太多了……所以,对于我偏执和标准的穷人来说,VC使用6.0,sqlserver使用2000或云版本。它只有几十兆字节。这已经足够开始了。哈哈。

前几天在博客园首页看到这个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啊,不知是不是没有下载到完整版,嘿嘿

免责声明:内容来源于网络,仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇架构之美读书笔记02PHP实现定时任务的几种方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下安装RabbitMQ

前言 RabbitMQ是一个开源的消息中间件,采用 Erlang 语言进行编写,因此RabbitMQ的安装需要依赖Erlang,现在我们将在 Linux 下进行安装RabbitMQ。 本人环境:CentOS 6.5 64位 安装Erlang 在安装Erlang的时候,有很多种方法,最开始我是想按照官网先下载Erlang安装包,然后再进行安装。但发现下载Er...

toastr简单用法及修改垂直居中

toastr是一个基于Jquery简单、漂亮的消息提示插件,使用简单、方便,可以根据设置的超时时间自动消失。1、使用很简单,首选引入toastr的js、css文件html <script src="<%=path%>/res/toastr/toastr.min.js"></script> <link rel="st...

深度分析WM_PAINT和WM_ERASEBKGND消息

       做windows开发这么久了,一直以来对WM_PAINT和WM_ERASEBKGND消息总是感觉理解的不准确,每次要自绘一个窗口都因为知其然不知其所以然,偶然发现一篇文章,详细透彻地分了这个两个消息的用途和设计初衷,这篇文章也是我见过最深入也是最准确关于WM_PAINT和WM_ERASEBKGND消息的,文中每一句话都值得咀嚼。先转载如下:...

celery redis rabbitMQ各是什么及之间的区别?

Celery:  Celery是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。  1、 celery工作流程: 消息中间件(message broker):Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成。包括,RabbitMQ, Redis, MongoDB ,SQLAl...

K8S 上部署 Redis-cluster 三主三从 集群

介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序集合。 由于Redis接受多种格式的密钥,因此可以在服务器上执行操作,从而减少了客户端的工作量。 它仅将磁盘用于持久性,而将数据库完全保存在内存中。Redis是一种流行的数据...

全面解读:微信服务号升级和群发增至4条的应用方法

全面解读:微信服务号升级和群发增至4条的应用方法 摘要:微信公众平台正式公布微信服务号升级的消息,提供高级群发接口,火速华磊初步总结:群发接口的提供意味着企业获得了精准推送的能力、企业获得了每月多次激活粉丝的能力、企业公众号的粉丝活跃度全面提升、公众号的营销核心过程趋于完美。 2014/4/15 21:58分,微信公众平台正式公布微信服务号升级的消息,消...