异想天开

What's the true meaning of light, Could you tell me why

数据库迁移数据

日期:2014-06-24 12:08:27
  
最后更新日期:2014-06-24 12:10:45
【技术文章,非码农勿入】
一.需求:
1.MongoDB导出的json格式数据导入到mysql数据库,数据量大概为80w条;
2.测试开发时已经导入过一次数据,当时把json转化为insert语句的sql脚本,后来正式上线时外网积累一周的数据,需要比较出两个json文件差异部分,生成sql脚本。
第一次导入使用如下python脚本:
[code lang="cpp"]
import json

data = []
print 'load...\n'
#打开json文件,加载全部数据
with open('./user_favorite.json') as f:
for line in f:
data.append(json.loads(line))
#print json.dumps(data, ensure_ascii=False)
print 'transform...\n'
str = "\r\n"
#生成insert语句
for item in data:
print json.dumps(item)
str = str + "insert into vod_record(userid,movieid,subid,viewtype,charge,flag,store_time) values "
str = str + "('%s','%s','%d','%d','%d','%d','%s');\r\n" % (item['userid'],item['movieid'],0,4,0,1,item['created_time'])

import codecs
#输出为sql脚本
file_object = codecs.open('xl_db.sql', 'w' ,"utf-8")
file_object.write(str)
file_object.close()
print "success"
[/code]
第二次导入,是一个新的user_favorite.json。用diff比较出增量部分。
[code lang="cpp"]
diff user_favorite_old.json user_favorite.json | grep "> " | sed 's/> //g' > a.json
[/code]
二.找出两个文件的增量部分其它方法。
1.grep方法
[code lang="cpp"]
grep -v -f file1 file2
[/code]
2.comm
[code lang="cpp"]
comm -23 file1 file2
[/code]