python mysql 匯出到mongodb指令碼
阿新 • • 發佈:2018-12-24
背景:
因測試效能,需要把mysql的資料匯出到mongodb中。
前提:
1、用navicat或者別的什麼mysql客戶端先把mysql的資料表匯出成json格式,本人用的是navicat。
2、利用mongodb的mongoimport工具。
程式碼:
#coding=utf-8 import os import json import subprocess if __name__ == "__main__": listfile=os.listdir('.') for file in listfile: print '處理:'+file des_file = "d:/out/"+file tmp = "d:/out2/"+file without_suffix = file.split('.')[0] suffix = file.split('.')[-1] if suffix == 'py': continue in_f = open(file, 'r') out_f = open(des_file, 'w') # navicat 匯出的格式有點點不大合適,需要把{recoder:[{item1},{item2}]}改成:[{item1},{item2}]格式 for index, line in enumerate(in_f.readlines()): if index == 0: out_f.write('[\n') continue if '"RECORDS":[' in line: continue else: out_f.write(line) in_f.close() out_f.close() # 刪除最後一行 with open(des_file) as f: lines = f.readlines() curr = lines[:-1] f = open(tmp, 'w') f.writelines(curr) f.close() # 執行mongodb import命令 # -d 資料庫名 -c 資料表名 -f JSON檔案 cmd ='D:\MongoDB\bin\mongoimport -d"chanzai_dev" -c"%s" --jsonArray --type=json --file=D:\out2\%s.json' % (without_suffix, without_suffix) print cmd p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)