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中的super()方法使用简介
Aug 14 Python
Python中random模块生成随机数详解
Mar 10 Python
Python字符串处理实例详解
May 18 Python
对Python进行数据分析_关于Package的安装问题
May 22 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
python 移除字符串尾部的数字方法
Jul 17 Python
Python箱型图处理离群点的例子
Dec 09 Python
python Manager 之dict KeyError问题的解决
Dec 21 Python
在Mac中PyCharm配置python Anaconda环境过程图解
Mar 11 Python
浅谈Python3中print函数的换行
Aug 05 Python
Python SMTP发送电子邮件的示例
Sep 23 Python
pycharm Tab键设置成4个空格的操作
Feb 26 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
php+mysql实现简单的增删改查功能
2015/07/13 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
js 实现无干扰阴影效果 简单好用(附文件下载)
2009/12/27 Javascript
JS无限极树形菜单,json格式、数组格式通用示例
2013/07/30 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
浅谈JS闭包中的循环绑定处理程序
2014/11/09 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
artDialog+plupload实现多文件上传
2016/07/19 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
React Native 集成jpush-react-native的示例代码
2017/08/16 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
详解ES6中的 Set Map 数据结构学习总结
2018/11/06 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python中的lambda表达式用法详解
2016/06/22 Python
Python多项式回归的实现方法
2019/03/11 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Python如何合并多个字典或映射
2020/07/24 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
Notino瑞典:购买香水和美容产品
2019/07/26 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
五四演讲稿范文
2014/09/03 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
医院合作意向书范本
2015/05/08 职场文书
CSS3实现列表无限滚动/轮播效果
2021/06/23 HTML / CSS
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
python数字图像处理:图像简单滤波
2022/06/28 Python