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中使用正则表达式的方法
Aug 13 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
使用Python对Csv文件操作实例代码
May 12 Python
python获取多线程及子线程的返回值
Nov 15 Python
对Python 窗体(tkinter)文本编辑器(Text)详解
Oct 11 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
python3.6下Numpy库下载与安装图文教程
Apr 02 Python
提升Python程序性能的7个习惯
Apr 14 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
python字符串拼接+和join的区别详解
Dec 03 Python
python 如何在测试中使用 Mock
Mar 01 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中配置IIS7实现基本身份验证的方法
2015/09/24 PHP
laravel实现简单用户权限的示例代码
2019/05/28 PHP
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
js中split函数的使用方法说明
2013/12/26 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
2014/04/11 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
JS实现点击下拉菜单把选择的内容同步到input输入框内的实例
2018/01/23 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
2018/08/08 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
linux下安装easy_install的方法
2013/02/10 Python
解决windows下Sublime Text 2 运行 PyQt 不显示的方法分享
2014/06/18 Python
详解Python中的各种函数的使用
2015/05/24 Python
关于Django外键赋值问题详解
2017/08/13 Python
Django分页功能的实现代码详解
2019/07/29 Python
如何获取Python简单for循环索引
2019/11/21 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
tensorflow 模型权重导出实例
2020/01/24 Python
python使用hdfs3模块对hdfs进行操作详解
2020/06/06 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
python实现模拟器爬取抖音评论数据的示例代码
2021/01/06 Python
html5+CSS3+JS实现七夕言情功能代码
2017/08/28 HTML / CSS
复古风格的女装和装饰品:ModCloth
2017/12/29 全球购物
西班牙自行车和跑步商店:Alltricks
2018/07/07 全球购物
介绍一下Java中的static关键字
2012/05/12 面试题
银行求职推荐信范文
2013/11/30 职场文书
领导干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
同学会感言
2015/07/30 职场文书
七个非常实用的Python工具包总结
2021/06/15 Python
python周期任务调度工具Schedule使用详解
2021/11/23 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis