Python3實(shí)現(xiàn)將本地JSON大數(shù)據(jù)文件寫(xiě)入MySQL數(shù)據(jù)庫(kù)的方法
本文實(shí)例講述了Python3實(shí)現(xiàn)將本地JSON大數(shù)據(jù)文件寫(xiě)入MySQL數(shù)據(jù)庫(kù)的方法。分享給大家供大家參考,具體如下:
最近導(dǎo)師給了一個(gè)yelp上的評(píng)論數(shù)據(jù),數(shù)據(jù)量達(dá)到3.55個(gè)G,如果進(jìn)行分析時(shí)直接使用本地文件,選擇python來(lái)分析,那么效率是非常低的;另一方面使用SQL來(lái)儲(chǔ)存文本文件最為安全,之前使用CSV,txt存儲(chǔ)的文本文件最后莫名其妙地出現(xiàn)一些奇怪字符,導(dǎo)致讀取數(shù)據(jù)分割時(shí)出現(xiàn)錯(cuò)亂。下面給出一個(gè)簡(jiǎn)單的代碼,將本地JSON文件內(nèi)容存入數(shù)據(jù)庫(kù)。
說(shuō)明:python版本為3.5,使用第三方庫(kù)為pymysql。因?yàn)閿?shù)據(jù)量比較大,不能一次性讀取到內(nèi)存(否則內(nèi)存報(bào)錯(cuò)),這里使用逐行讀取的方式。數(shù)據(jù)庫(kù)先創(chuàng)建后再使用以下代碼;
import json import pymysql # 讀取review數(shù)據(jù),并寫(xiě)入數(shù)據(jù)庫(kù) # 導(dǎo)入數(shù)據(jù)庫(kù)成功,總共4736897條記錄 def prem(db): cursor = db.cursor() cursor.execute("SELECT VERSION()") data = cursor.fetchone() print("Database version : %s " % data) # 結(jié)果表明已經(jīng)連接成功 cursor.execute("DROP TABLE IF EXISTS review") # 習(xí)慣性 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) # 根據(jù)需要?jiǎng)?chuàng)建一個(gè)表格 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) # 解析每一行數(shù)據(jù) 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__": # 起到一個(gè)初始化或者調(diào)用函數(shù)的作用 db = pymysql.connect("localhost", "root", "password(你的密碼)", "數(shù)據(jù)庫(kù)名稱", charset='utf8') cursor = db.cursor() prem(db) reviewdata_insert(db) cursor.close()
PS:這里再為大家推薦幾款比較實(shí)用的json在線工具供大家參考使用:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
http://tools.jb51.net/code/json
JSON在線格式化工具:
http://tools.jb51.net/code/jsonformat
在線XML/JSON互相轉(zhuǎn)換工具:
http://tools.jb51.net/code/xmljson
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
http://tools.jb51.net/code/jsoncodeformat
在線json壓縮/轉(zhuǎn)義工具:
http://tools.jb51.net/code/json_yasuo_trans
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python操作json技巧總結(jié)》、《Python+MySQL數(shù)據(jù)庫(kù)程序設(shè)計(jì)入門(mén)教程》、《Python常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總》、《Python數(shù)學(xué)運(yùn)算技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
- Python3中對(duì)json格式數(shù)據(jù)的分析處理
- python3實(shí)現(xiàn)從kafka獲取數(shù)據(jù),并解析為json格式,寫(xiě)入到mysql中
- python3 json數(shù)據(jù)格式的轉(zhuǎn)換(dumps/loads的使用、dict to str/str to dict、json字符串/字典的相互轉(zhuǎn)換)
- 解決python3 json數(shù)據(jù)包含中文的讀寫(xiě)問(wèn)題
- python 正則表達(dá)式獲取字符串中所有的日期和時(shí)間
- python中日期和時(shí)間格式化輸出的方法小結(jié)
- python操作日期和時(shí)間的方法
- Python3 JSON 數(shù)據(jù)解析及日期和時(shí)間小結(jié)
相關(guān)文章
python將excel轉(zhuǎn)換為csv的代碼方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于python如何將excel轉(zhuǎn)換為csv的實(shí)例方法和代碼內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-07-07Python?pyecharts實(shí)時(shí)畫(huà)圖自定義可視化經(jīng)緯度熱力圖
這篇文章主要為大家介紹了Python?pyecharts實(shí)時(shí)畫(huà)圖自定義經(jīng)緯度熱力圖實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06Python對(duì)接六大主流數(shù)據(jù)庫(kù)(只需三步)
這篇文章主要介紹了Python對(duì)接六大主流數(shù)據(jù)庫(kù)(只需三步),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Python中用PIL庫(kù)批量給圖片加上序號(hào)的教程
這篇文章主要介紹了Python中用PIL庫(kù)批量給圖片加上序號(hào)的教程,PIL庫(kù)是Python中一個(gè)非常強(qiáng)大的處理圖片的庫(kù),需要的朋友可以參考下2015-05-05Pandas 數(shù)據(jù)處理,數(shù)據(jù)清洗詳解
今天小編就為大家分享一篇Pandas 數(shù)據(jù)處理,數(shù)據(jù)清洗詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07利用pyecharts讀取csv并進(jìn)行數(shù)據(jù)統(tǒng)計(jì)可視化的實(shí)現(xiàn)
這篇文章主要介紹了利用pyecharts讀取csv并進(jìn)行數(shù)據(jù)統(tǒng)計(jì)可視化的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04