前几天在博客园首页看到这个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. PL/SQL中LOOP循环控制语句

    在PL/SQL中可以使用LOOP语句对数据进行循环处理,利用该语句可以循环执行指定的语句序列.常用的LOOP循环语句包含3种形式:基本的LOOP.WHILE...LOOP和FOR...LOOP. LO ...

  2. GCC 编译优化指南

    转自: http://www.jinbuguo.com/linux/optimize_guide.html GCC 编译优化指南 作者:金步国[www.jinbuguo.com] 版权声明 本文作者是 ...

  3. excel 经验总结

    1.2007版excel表格中怎么将使用字母+数字下拉排序 比如:A201110300001怎么在excel表格中往下拉的时候变成A201110300002.A201110300003…… 方法: 因 ...

  4. bjfu1238 卡特兰数取余

    题目就是指定n,求卡特兰数Ca(n)%m.求卡特兰数有递推公式.通项公式和近似公式三种,因为要取余,所以近似公式直接无法使用,递推公式我简单试了一下,TLE.所以只能从通项公式入手. Ca(n) = ...

  5. IOS PUSH 实践操作~~~~

    1.推送过程简介        (1)App启动过程中,使用UIApplication::registerForRemoteNotificationTypes函数与苹果的APNS服务器通信,发出注册远 ...

  6. C ~ 指针函数与函数指针的区别

    一. 在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义: 1.指针函数是指带指针的函数,即本质是一个函数.函数返回类型是某 ...

  7. DX11&C++

  8. python学习之subprocess模块

    subprocess.Popen 这个模块主要就提供一个类Popen: class subprocess.Popen( args, bufsize=0, executable=None, stdin= ...

  9. syscolumns、sysconstraints、sysobjects

    1.根据表名查询对象ID SELECT OBJECT_ID('Production.Product') 结果:1429580131 不能作为输入参数:列名.约束名 能作为输入参数:表名 2.根据对象I ...

  10. 在linux上用dd命令实现ghost功能

    ghost和g4l 安装操作系统,速度太慢,整个过程太冗长乏味了. 安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入无数的文件.因为涉及到大量的文件定位和读写,速度一定是快不起来的. ...