Python3实现将本地JSON大数据文件写入MySQL数据库的方法


Posted in Python onJune 13, 2018

本文实例讲述了Python3实现将本地JSON大数据文件写入MySQL数据库的方法。分享给大家供大家参考,具体如下:

最近导师给了一个yelp上的评论数据,数据量达到3.55个G,如果进行分析时直接使用本地文件,选择python来分析,那么效率是非常低的;另一方面使用SQL来储存文本文件最为安全,之前使用CSV,txt存储的文本文件最后莫名其妙地出现一些奇怪字符,导致读取数据分割时出现错乱。下面给出一个简单的代码,将本地JSON文件内容存入数据库。

说明:python版本为3.5,使用第三方库为pymysql。因为数据量比较大,不能一次性读取到内存(否则内存报错),这里使用逐行读取的方式。数据库先创建后再使用以下代码;

import json
import pymysql
# 读取review数据,并写入数据库
# 导入数据库成功,总共4736897条记录
def prem(db):
  cursor = db.cursor()
  cursor.execute("SELECT VERSION()")
  data = cursor.fetchone()
  print("Database version : %s " % data) # 结果表明已经连接成功
  cursor.execute("DROP TABLE IF EXISTS review") # 习惯性
  sql = """CREATE TABLE review (
       review_id VARCHAR(100),
       user_id VARCHAR(100),
       business_id VARCHAR(200),
       stars INT,
       text VARCHAR(10000) NOT NULL,
       useful INT,
       funny INT,
       cool INT)"""
  cursor.execute(sql) # 根据需要创建一个表格
def reviewdata_insert(db):
  with open('E:/data/yelp_data/dataset/review.json', encoding='utf-8') as f:
    i = 0
    while True:
      i += 1
      print(u'正在载入第%s行......' % i)
      try:
        lines = f.readline() # 使用逐行读取的方法
        review_text = json.loads(lines) # 解析每一行数据
        result = []
        result.append((review_text['review_id'], review_text['user_id'],      review_text['business_id'],review_text['stars'], review_text['text'], review_text['useful'],
              review_text['funny'], review_text['cool']))
        print(result)
        inesrt_re = "insert into review(review_id, user_id, business_id, stars, text, useful,      funny, cool) values (%s, %s, %s, %s,%s, %s,%s, %s)"
        cursor = db.cursor()
        cursor.executemany(inesrt_re, result)
        db.commit()
      except Exception as e:
        db.rollback()
        print(str(e))
        break
if __name__ == "__main__": # 起到一个初始化或者调用函数的作用
  db = pymysql.connect("localhost", "root", "password(你的密码)", "数据库名称", charset='utf8')
  cursor = db.cursor()
  prem(db)
  reviewdata_insert(db)
  cursor.close()
Python 相关文章推荐
python检测远程udp端口是否打开的方法
Mar 14 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python中用函数作为返回值和实现闭包的教程
Apr 27 Python
python的pdb调试命令的命令整理及实例
Jul 12 Python
python生成二维码的实例详解
Oct 29 Python
关于django 数据库迁移(migrate)应该知道的一些事
May 27 Python
详解Python的循环结构知识点
May 20 Python
使用python来调用CAN通讯的DLL实现方法
Jul 03 Python
python实现动态数组的示例代码
Jul 15 Python
Django如何将URL映射到视图
Jul 29 Python
Pytorch 抽取vgg各层并进行定制化处理的方法
Aug 20 Python
Python实现壁纸下载与轮换
Oct 19 Python
解决Mac安装scrapy失败的问题
Jun 13 #Python
mac安装scrapy并创建项目的实例讲解
Jun 13 #Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 #Python
基于pip install django失败时的解决方法
Jun 12 #Python
基于Python pip用国内镜像下载的方法
Jun 12 #Python
pip安装时ReadTimeoutError的解决方法
Jun 12 #Python
解决pip install的时候报错timed out的问题
Jun 12 #Python
You might like
php后门URL的防范
2013/11/12 PHP
微信开发之获取JSAPI TICKET
2017/07/07 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
javascript中的括号()用法小结
2014/04/14 Javascript
Jquery解析Json格式数据过程代码
2014/10/17 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
KnockoutJS 3.X API 第四章之click绑定
2016/10/10 Javascript
微信公众平台开发教程(六)获取个性二维码的实例
2016/12/02 Javascript
原生JS实现图片轮播效果
2016/12/26 Javascript
JavaScript实现图片瀑布流和底部刷新
2017/01/02 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访-EG篇
2018/04/03 DOTA
go和python调用其它程序并得到程序输出
2014/02/10 Python
pandas中Timestamp类用法详解
2017/12/11 Python
Python处理文本换行符实例代码
2018/02/03 Python
python 将md5转为16字节的方法
2018/05/29 Python
为什么从Python 3.6开始字典有序并效率更高
2019/07/15 Python
python操作excel让工作自动化
2019/08/09 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
New delete 与malloc free 的联系与区别
2013/02/04 面试题
小学兴趣小组活动总结
2014/07/07 职场文书
2014年教师批评与自我批评思想汇报
2014/09/20 职场文书
小学少先队工作总结2015
2015/05/26 职场文书
五年级语文教学反思
2016/03/03 职场文书
python使用matplotlib绘制图片时x轴的刻度处理
2021/08/30 Python
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python