1. 程式人生 > 資料庫 >Python3實現將本地JSON大資料檔案寫入MySQL資料庫的方法

Python3實現將本地JSON大資料檔案寫入MySQL資料庫的方法

本文例項講述了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)"
        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()

PS:這裡再為大家推薦幾款比較實用的json線上工具供大家參考使用:

線上JSON程式碼檢驗、檢驗、美化、格式化工具:
http://tools.jb51.net/code/json

JSON線上格式化工具:
http://tools.jb51.net/code/jsonformat

線上XML/JSON互相轉換工具:
http://tools.jb51.net/code/xmljson

json程式碼線上格式化/美化/壓縮/編輯/轉換工具:
http://tools.jb51.net/code/jsoncodeformat

線上json壓縮/轉義工具:
http://tools.jb51.net/code/json_yasuo_trans

更多關於Python相關內容感興趣的讀者可檢視本站專題:《Python操作json技巧總結》、《Python+MySQL資料庫程式設計入門教程》、《Python常見資料庫操作技巧彙總》、《Python數學運算技巧總結》、《Python資料結構與演算法教程》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》、《Python入門與進階經典教程》及《Python檔案與目錄操作技巧彙總》

希望本文所述對大家Python程式設計有所幫助。