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中的pydoc模块和distutils模块
Apr 13 Python
python获取文件扩展名的方法
Jul 06 Python
python调用OpenCV实现人脸识别功能
May 25 Python
不知道这5种下划线的含义,你就不算真的会Python!
Oct 09 Python
python实现银联支付和支付宝支付接入
May 07 Python
Django框架model模型对象验证实现方法分析
Oct 02 Python
使用python实现对元素的长截图功能
Nov 14 Python
Python ATM功能实现代码实例
Mar 19 Python
python实现学生成绩测评系统
Jun 22 Python
Python如何解除一个装饰器
Aug 07 Python
基于python实现简单C/S模式代码实例
Sep 14 Python
Python如何利用正则表达式爬取网页信息及图片
Apr 17 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
图书管理程序(一)
2006/10/09 PHP
php获得用户ip地址的比较不错的方法
2014/02/08 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
CI框架使用composer安装的依赖包步骤与方法分析
2016/11/21 PHP
php接口技术实例详解
2016/12/07 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
jQuery 1.0.4 - New Wave Javascript(js源文件)
2007/01/15 Javascript
从sohu弄下来的flash中展示图片的代码
2007/04/27 Javascript
javascript循环变量注册dom事件 之强大的闭包
2010/09/08 Javascript
js获得鼠标的坐标值的方法
2013/03/13 Javascript
深入理解javascript中的立即执行函数(function(){…})()
2014/06/12 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
2016/05/12 Javascript
JS生成一维码(条形码)功能示例
2017/01/19 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
Bootstarp在pycharm中的安装及简单的使用方法
2019/04/19 Javascript
JS遍历树层级关系实现原理解析
2020/08/31 Javascript
ant design vue 表格table 默认勾选几项的操作
2020/10/31 Javascript
python中ConfigParse模块的用法
2014/09/29 Python
Python实现各种排序算法的代码示例总结
2015/12/11 Python
Python随机读取文件实现实例
2017/05/25 Python
python处理csv中的空值方法
2018/06/22 Python
selenium + python 获取table数据的示例讲解
2018/10/13 Python
Python基于当前时间批量创建文件
2020/05/07 Python
ECCO爱步官方旗舰店:丹麦鞋履品牌
2018/01/02 全球购物
师范毕业生自荐信
2013/10/17 职场文书
酒店总经理工作职责
2013/12/13 职场文书
高一自我鉴定
2013/12/17 职场文书
养殖人员的创业计划书范文
2013/12/26 职场文书
团日活动策划书
2014/02/01 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
团队精神的演讲稿
2014/05/14 职场文书
数据保密承诺书
2014/06/03 职场文书
2015年七一建党节慰问信
2015/03/23 职场文书
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
Python使用DFA算法过滤内容敏感词
2022/04/22 Python