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函数递归和生成器
Jun 06 Python
Python 中迭代器与生成器实例详解
Mar 29 Python
利用Python读取文件的四种不同方法比对
May 18 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
Apr 20 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
django DRF图片路径问题的解决方法
Sep 10 Python
Python图片的横坐标汉字实例
Dec 04 Python
python3 tcp的粘包现象和解决办法解析
Dec 09 Python
详解python3类型注释annotations实用案例
Jan 20 Python
Python Django项目和应用的创建详解
Nov 27 Python
python字符串的一些常见实用操作
Apr 06 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的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
测试php连接mysql是否成功的代码分享
2014/01/24 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
Yii实现MySQL多数据库和读写分离实例分析
2014/12/03 PHP
node+express+jade制作简单网站指南
2014/11/26 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
javascript中checkbox使用方法实例演示
2015/11/19 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
关于 angularJS的一些用法
2017/11/29 Javascript
微信小程序 scroll-view实现锚点滑动的示例
2017/12/06 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
Vue指令指令大全
2019/02/09 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
解决vue组件props传值对象获取不到的问题
2019/06/06 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
微信sdk实现禁止微信分享(使用原生php实现)
2019/11/15 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
[00:06]Yes,it worked!小卡尔成功穿越时空加入战场!
2019/07/20 DOTA
理解Python中函数的参数
2015/04/27 Python
python生成式的send()方法(详解)
2017/05/08 Python
Django 反向生成url实例详解
2019/07/30 Python
python redis连接 有序集合去重的代码
2019/08/04 Python
Django中间件拦截未登录url实例详解
2019/09/03 Python
eBay爱尔兰站:eBay.ie
2019/08/09 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
财务总经理岗位职责
2014/02/16 职场文书
质量承诺书怎么写
2014/05/24 职场文书
企业人事任命书
2014/06/05 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
爱护环境建议书
2015/09/14 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL