1.批量读取数据

# 获取文件夹下所有文件的路径
def file_path(dirname):# 将文件路径存到redisredis.expire("json_path", 0)for root, _, files in os.walk(dirname):for f in files:file_path = os.path.join(root, f)# 将文件路径写死# 将每一个json path存入redisredis.lpush("json_path", file_path)logger.info(f"{file_path}  to  redis!")length = redis.llen("json_path")logger.info(f"总共有 --------{length}个文件 -------")logger.info(f"总共有 --------{length}个文件 -------")logger.info(f"总共有 --------{length}个文件 -------")# 读取一个文件的所有数据
def read_json():process = os.getpid()while True:json_path = redis.rpop("json_path")if json_path is None:breakpath = bytes.decode(json_path)logger.info(f"process_{process} start read | {path} ")start = timeit.default_timer()with open(path, 'r', encoding='utf-8') as f:i = 0count = 0mongo_save_list = []line_data = 'a'f1 = open(r"上传失败.txt", 'a+', encoding='utf-8')f2 = open(r"上传成功.txt", 'a+', encoding='utf-8')while line_data:try:line_data = f.readline()if line_data:try:data = json.loads(line_data)  # 把读取的一行的json数据加载出来except Exception as e:print('error1:', e)count += 1print("上传失败{}条".format(count))f1.write("上传失败{}条".format(count) + '\n')passi += 1print("上传成功{}条".format(i))f2.write("上传成功{}条".format(i) + '\n')tx = data# mongo_save_list = []mongo_save_list.append(tx)if len(mongo_save_list) == 1000:# print("1",len(mongo_save_list))yield mongo_save_listdel(mongo_save_list)mongo_save_list = []# print("2",len(mongo_save_list))else:yield mongo_save_listreturn StopIterationexcept Exception as e:print('error2', e)elapsed = (timeit.default_timer() - start)logger.info(f"process_{process} readall  success! | used {elapsed} s")

2.存入mongo

"""存入本地mongo"""
def init_motor(datas):db_url = '127.0.0.1'db_name = "test"db_collection = "test"db_port = 27017# 建立连接# 同步pymongoclient = pymongo.MongoClient(db_url, db_port)# 连接某个库名字db = client[db_name][db_collection]# 批量插入try:db.insert_many(datas, ordered=False, bypass_document_validation=True)print('正在插入数据。。。')except BulkWriteError as e:print('84error', e)logger.error(e.details)# 将数据存入mongo
def save_to_mongo():data = read_json()for d in data:init_motor(d)def dir_path():DIRPATH = r"json_files"return DIRPATHif __name__ == '__main__':start = timeit.default_timer()dirpath = dir_path()# 生成文件路径file_path(dirpath)# 多进程保存process_count = 50with multiprocessing.Pool(process_count) as pool:for i in range(process_count):pool.apply_async(save_to_mongo)pool.close()pool.join()elapsed = (timeit.default_timer() - start)logger.info(f"所有数据存储完毕:| used {elapsed} s")

大批量读取硬盘中的数据,存储到mongo数据库中相关推荐

  1. Softing dataFEED OPC Suite将西门子PLC数据存储到Oracle数据库中

    一 背景 现代工业产品不仅生产批量大,而且过程自动化程度高,这对于用户追溯产品设计与制造过程中产生的数据而言,无疑是个新的挑战.与此同时,制造商们对产品制造过程中产生的大量工艺数据也愈发重视,并不断寻 ...

  2. Java读取Excel表格中的数据并插入到数据库中

    这里写自定义目录标题 一.查看Excel表格 二.数据库中创建表 三.添加maven依赖 四.创建实体类 五.dao层接口添加新增方法 六.service层 1.service层接口 2.接口实现类 ...

  3. PHP将excel文件中的数据批量导入到数据库中

    2019独角兽企业重金招聘Python工程师标准>>> 这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插 ...

  4. php excel批量导入,PHP将excel文件中的数据批量导入到数据库中

    这几天在做项目时,遇到了需要批量导入数据的情况,用户将excel表格提交后,需要我们后台这边将excel表格信息中的内容全部插入到数据表中.当然,前提是用户给我们的excel表格中的信息必须和我们表中 ...

  5. 将 .csv文件中的数据导入My SQL数据库中

    利用My SQL 将.csv文件中的数据导入数据库.首先以管理员身份运行cmd,输入指令net start mysql 运行mysql服务,然后输入指令mysql -u root -p ,输入密码.* ...

  6. 将Excel中的数据导入到MySql数据库中

    如何导入到MySql中 将数据导入MySql库中,比较直接的方式就是将数据生成相应的SQL语句来执行.我们的思路是将Excel中的数据拼接成相应的SQL语句并保存在**.sql**文件中提供给MySq ...

  7. ajax向数据库中添加数据,用jqueryajax在数据库中插入数据

    我有一个带有c#(.net4)代码的表单.在这种形式下,用户填写他的规格并提交. 我想在jquery中使用ajax或post方法来预防blink.i写流程代码. "成功"函数执行, ...

  8. python:使用selenium爬取51job(前程无忧)并将爬取数据存储到MySql数据库中的代码实例

    自己捣鼓了几天写的代码,基本上把51job的岗位相关的数据都爬下来了,可以视要求自行增减,代码虽然有些简陋,不过我爬取的时候没报什么错.代码适合初学者学习使用,废话不多说,代码如下: from sel ...

  9. java从mysql中查数据_java怎么从数据库中查询数据并输出

    try { //这里的是MYSQL 举例 //加载驱动 Class.forName("com.mysql.jdbc.Driver"); //创建数据库连接 Connection c ...

最新文章

  1. 面向对象与软件工程---团队作业1
  2. 浅谈android的事件分发机制
  3. 精通python语言要多久-这样学可以精通Python语言
  4. android自动更新列表,Android数据库表结构自动升级
  5. java kafka 消费_java编程之Kafka_消费者API详解
  6. 如何处理UI5一般性错误Cannot read property md of undefined
  7. SkyWalking8.1.0 部署和使用
  8. CocoaPods通过网络代理执行资源更新
  9. qq浏览器私密空间在哪 具体操作步骤
  10. tomcat启动流程分析
  11. 解决电脑启动报:Reboot and select proper boot device
  12. Google Java编程规范
  13. 深度解析 steam密码js逆向(篇幅很长)
  14. JAVA基础,输入/输出(I/O)流
  15. 【SharePoint】通过CAML Query查询SharePoint User or Group列(人员和用户组字段)
  16. 抖音怎么上热门?这样发视频点赞过万!
  17. 服务器的mib文件,snmp 服务器增加 mib
  18. js ajax 401,$ .ajax请求总是401(UNAUTHORIZED)
  19. 关于ARMv8另外几个问题
  20. ArcGIS server如何将自己的小地图叠加到Google maps或者Virtual Earth上

热门文章

  1. 20211030.剪绳子
  2. PWM、SPWM、SVPWM的个人理解
  3. linux ps swn,Linux操作的基本概念与命令(转)
  4. 软件生命周期管理系统ALM配置说明(二)
  5. 思科http服务器显示设置,思科里面的服务器怎么设置
  6. 转行做“程序员”很难?这里有几个建议...
  7. (React入门)ref
  8. 精读《X3D: Expanding Architectures for Efficient Video Recognition》论文
  9. v-for图片九宫显示
  10. unity 设置图片九宫格_Unity UGUI篇 Image图片