如何使用python将GB级数据读取处理并写入MongoDB

如何优雅的使用python将GB级数据读取处理并写入MongoDB

写在前面的话

  • 本人的数据11GB(从来没处理过那么大的数据的我瑟瑟发抖)
  • 经过处理后导入到MongoDB后变成了15.3GB
  • 本菜鸡呕心沥血总结的代码,可能时间有点长,但是真的挺好用的!!

我的数据处理要求

逐行处理,导入MongoDB的列名还是原数据的列名

整体思路过程

(千万不要用pandas乱码呀,绝了门子了!!用“gbk”,“utf-8”,"gbk…"都不行!!!)
(映射表是个好东西!!withopen真好用!!)

import re
from pymongo import MongoClient
filepath=your file path
client = MongoClient(host)
dictionary = client[xxx]
dictionary.drop_collection(go_collection)
go_collection = dictionary['xxx_{today}'.format(today=time.strftime("%Y%m%d", time.localtime()))]
dictionary.drop_collection(go_collection)
data=[]
with open(filepath,'r',encoding="gbk",errors="ignore") as file_handler:
    for line in file_handler:
        //do something
       data.append(your row)
       if len(data)==20000:#可变
           print('Inserting data...')  
           go_collection.insert_many(data)
           print("DONE!")
            data = []
   print('finally Inserting data...')  #
   go_collection.insert_many(data)
   print("DONE!")
   data = []
   client.close() 
 print("finally Done!!!!!!!")

好了!!!

你可能感兴趣的:(python,python,mongodb,csv)