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实现的阳历转阴历(农历)算法
Apr 25 Python
Python操作SQLite简明教程
Jul 10 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python基于list的append和pop方法实现堆栈与队列功能示例
Jul 24 Python
Python 查看文件的读写权限方法
Jan 23 Python
Python中property属性实例解析
Feb 10 Python
利用PyCharm Profile分析异步爬虫效率详解
May 08 Python
Python通用函数实现数组计算的方法
Jun 13 Python
python使用ctypes库调用DLL动态链接库
Oct 22 Python
Python使用Beautiful Soup(BS4)库解析HTML和XML
Jun 05 Python
Python 避免字典和元组的多重嵌套问题
Jul 15 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
德生1994机评
2021/03/02 无线电
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php自动给文章加关键词链接的函数代码
2012/11/29 PHP
PHP 使用MySQL管理Session的回调函数详解
2013/06/21 PHP
PHP实现数字补零功能的2个函数介绍
2014/05/12 PHP
PHP贪婪算法解决0-1背包问题实例分析
2015/03/23 PHP
jquery选择器使用详解
2014/04/08 Javascript
jQuery取得设置清空select选择的文本与值
2014/07/08 Javascript
Vue.js常用指令之循环使用v-for指令教程
2017/06/27 Javascript
详解webpack2+React 实例demo
2017/09/11 Javascript
vue.js element-ui validate中代码不执行问题解决方法
2017/12/18 Javascript
babel之配置文件.babelrc入门详解
2018/02/22 Javascript
基于JavaScript实现瀑布流布局
2018/08/15 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
Vue封装全局过滤器Filters的步骤
2020/09/16 Javascript
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中os.path用法分析
2015/01/15 Python
Django imgareaselect手动剪切头像实现方法
2015/05/26 Python
Python实现求最大公约数及判断素数的方法
2015/05/26 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
python爬虫之xpath的基本使用详解
2018/04/18 Python
python:print格式化输出到文件的实例
2018/05/14 Python
对Python闭包与延迟绑定的方法详解
2019/01/07 Python
Python转换时间的图文方法
2019/07/01 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Matplotlib 折线图plot()所有用法详解
2020/07/28 Python
pytorch简介
2020/11/11 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
工程部主管岗位职责
2013/11/17 职场文书
yy结婚证婚词
2014/01/10 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
县委党的群众路线教育实践活动工作情况报告
2014/10/25 职场文书
Tomcat执行startup.bat出现闪退的原因及解决办法
2022/04/20 Servers