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 yield使用方法示例
Dec 04 Python
python获取当前日期和时间的方法
Apr 30 Python
Python编写一个优美的下载器
Apr 15 Python
Python做智能家居温湿度报警系统
Sep 25 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
Jul 22 Python
Python调用.NET库的方法步骤
Dec 27 Python
python检查目录文件权限并修改目录文件权限的操作
Mar 11 Python
Java如何基于wsimport调用wcf接口
Jun 17 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
python 爬虫网页登陆的简单实现
Nov 30 Python
pytest配置文件pytest.ini的详细使用
Apr 17 Python
Python中的socket网络模块介绍
Jul 23 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
咖啡是不是喝了会上瘾?咖啡是必须品吗!
2021/03/04 新手入门
两种php调用Java对象的方法
2006/10/09 PHP
PHP 截取字符串专题集合
2010/08/19 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
Linux下创建nginx脚本-start、stop、reload…
2014/08/03 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
php求一个网段开始与结束IP地址的方法
2015/07/09 PHP
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
JQuery点击事件回到页面顶部效果的实现代码
2016/05/24 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
微信内置开发 iOS修改键盘换行为搜索的解决方案
2019/11/06 Javascript
ES6学习教程之Promise用法详解
2020/11/22 Javascript
Python中使用HTMLParser解析html实例
2015/02/08 Python
flask中的wtforms使用方法
2018/07/21 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
浅谈python多进程共享变量Value的使用tips
2019/07/16 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
python 8种必备的gui库
2020/08/27 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
Simons官方网站:加拿大时尚零售商
2020/02/20 全球购物
水污染治理工程专业自荐信
2014/06/21 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
营销总经理岗位职责范本
2014/09/02 职场文书
2014年班主任工作总结
2014/11/08 职场文书
英文感谢信范文
2015/01/21 职场文书
委托公证书样本
2015/01/23 职场文书
会议欢迎词范文
2015/01/27 职场文书
幼儿教师师德培训心得体会
2016/01/09 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书
学者《孟子》名人名言
2019/08/09 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript