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实现去除代码前行号的方法
Mar 10 Python
简化Python的Django框架代码的一些示例
Apr 20 Python
Python 中开发pattern的string模板(template) 实例详解
Apr 01 Python
python实现录音小程序
Oct 26 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
Jan 17 Python
python中时间模块的基本使用教程
May 14 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
May 15 Python
基于python+selenium的二次封装的实现
Jan 06 Python
python正则过滤字母、中文、数字及特殊字符方法详解
Feb 11 Python
Python创建空列表的字典2种方法详解
Feb 13 Python
用Python生成HTML表格的方法示例
Mar 06 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
May 11 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生成WAP页面
2006/10/09 PHP
使用php验证复选框有效性的示例
2013/11/13 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
yii2.0整合阿里云oss的示例代码
2017/09/19 PHP
检测是否已安装 .NET Framework 3.5的js脚本
2009/02/14 Javascript
javascript中判断一个值是否在数组中并没有直接使用
2012/12/17 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
javascript中为某个元素指定事件的三种方式
2014/08/07 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
基于Jquery制作图片文字排版预览效果附源码下载
2015/11/18 Javascript
jQuery鼠标悬浮链接弹出跟随图片实例代码
2016/01/08 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
打造通用的匀速运动框架(实例讲解)
2017/10/17 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
2017/10/20 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
Vue中自定义全局组件的实现方法
2017/12/08 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
JS实现仿微信支付弹窗功能
2018/06/25 Javascript
axios的拦截请求与响应方法
2018/08/11 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
如何测量vue应用运行时的性能
2019/06/21 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
Vue封装Axios请求和拦截器的步骤
2020/09/16 Javascript
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
python使用urllib2提交http post请求的方法
2015/05/26 Python
Python切片知识解析
2016/03/06 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
django之状态保持-使用redis存储session的例子
2019/07/28 Python
Python xmltodict模块安装及代码实例
2020/10/05 Python
用React加CSS3实现微信拆红包动画效果
2017/03/13 HTML / CSS
日语翻译个人求职的自我评价
2013/10/14 职场文书
2015社区爱国卫生工作总结
2015/04/21 职场文书
Ajax异步刷新功能及简单案例
2021/11/20 Javascript