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创建XML文档
Mar 01 Python
Python标准库内置函数complex介绍
Nov 25 Python
Python通过PIL获取图片主要颜色并和颜色库进行对比的方法
Mar 19 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
django2 快速安装指南分享
Jan 05 Python
Python正则表达式和元字符详解
Nov 29 Python
python中必要的名词解释
Nov 20 Python
python3 求约数的实例
Dec 05 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
python实现滑雪游戏
Feb 22 Python
python如何进入交互模式
Jul 06 Python
Pytorch实现图像识别之数字识别(附详细注释)
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 不同编码下的字符串长度区分
2009/09/26 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
php进行ip地址掩码运算处理的方法
2016/07/11 PHP
实例说明js脚本语言和php脚本语言的区别
2019/04/04 PHP
json跟xml的对比分析
2008/06/10 Javascript
分享27款非常棒的jQuery 表单插件
2011/03/28 Javascript
JavaScript之HTMLCollection接口代码
2011/04/27 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
浅谈Javascript Base64 加密解密
2014/12/28 Javascript
JS原型链怎么理解
2016/06/27 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
JS正则替换掉小括号及内容的方法
2016/11/29 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
微信小程序之网络请求简单封装实例详解
2017/06/28 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
浅谈JavaScript的innerWidth与innerHeight
2017/10/12 Javascript
jQuery实现表格隔行换色
2018/09/01 jQuery
在小程序/mpvue中使用flyio发起网络请求的方法
2018/09/13 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
JS/CSS实现字符串单词首字母大写功能
2019/09/03 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
使用Python 统计高频字数的方法
2019/01/31 Python
详解Ubuntu环境下部署Django+uwsgi+nginx总结
2020/04/02 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
2020/04/25 Python
HTML5 Canvas的事件处理介绍
2015/04/24 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
Java基础面试题
2014/07/19 面试题
酒店大堂副理的职责范文
2014/02/13 职场文书
2014年学校食堂工作总结
2014/11/25 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2015年学校禁毒工作总结
2015/05/27 职场文书
Django如何创作一个简单的最小程序
2021/05/12 Python
python 离散点图画法的实现
2022/04/01 Python