当前位置: 首页 > news >正文

Python代码片段-Excel导入到MongoDB

有一次遇到一个需求,需要把Excel的数据导入到MongoDB中,表面上感觉就是导入数据很简单,但实际操作后,发现是比较麻烦的一个事情,一般图形化的工具对于MongoDB而言,导入选项都是json的,根本没有Excel的选项,而Excel中的数据包含敏感信息,又不能用在线工具转换为json,当时为了尽快处理完事情,当时尝试了Navicate工具,是支持的从Excel读取插入到MongoDB中。

这个事件结束后,感觉还是有必要要写个Python的导入脚本,完善自己的工具箱,如果再次遇到相同的问题可以有个PlanB。

代码虽然没有几行,但是胜在好用

import pandas as pd
import pymongo


client = pymongo.MongoClient('mongodb://root:3a20ebec5e29c031be5ce78e6413a0@localhost:27017/admin?directConnection=true')
database = client["db1"]
collection = database["table1"]

df = pd.DataFrame(pd.read_excel("工作簿1.xlsx", sheet_name ="Sheet1"))

for row in df.itertuples():
    buf = {}
    for i,v in enumerate (list(df.columns)):
        buf [v] = row[i+1]
    print(buf)
    collection.insert_one(buf)

构建测试用Excel
在这里插入图片描述

MongoDB数据展示
在这里插入图片描述

另附Linux启动mongodb的docker-compose脚本,windows或macos请自行更改

#!/bin/bash

# 在当前目录下创建mongodb的docker-compose及相关目录

mkdir mongo-shell
mkdir db
openssl rand -base64 745 > keyfile.key
sudo chown 999 keyfile.key
sudo chmod 600 keyfile.key
sudo chown 999 mongo-shell

cat > docker-compose.yam <<EOF
version: "3.2"
services:
  mongo-standalone:
    image: mongo:4.4
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: password
    ports:
      - "27017:27017"
    volumes:
      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
      - ./db:/data/db
      - ./keyfile.key:/data/keyfile.key
    command: mongod --keyFile=/data/keyfile.key --auth --port=27017
EOF

docker-compose up -d 

相关文章:

  • 数据结构(陈越,何钦铭) 第四讲 树(中)
  • 进程状态(R|S|D|t|T|X|Z)、僵尸进程及孤儿进程
  • 测量海拔以及两点间路程(十六)
  • 利用deepseek参与软件测试 基本架构如何 又该在什么环节接入deepseek
  • HWUI 和 Skia
  • python-leetcode-每日温度
  • 精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化
  • BUU41 [GYCTF2020]FlaskApp1【SSTI】
  • mac下载MAMP6.8.1
  • Java数据结构第十四期:走进二叉树的奇妙世界(三)
  • QILSTE H6-C111LB高亮蓝光LED灯珠 发光二极管LED
  • Feign 类型转换问题解析:如何正确处理 `ResponseEntity<byte[]>` 返回值
  • keil中出现Error_Handler错误的解决方法
  • 【学习笔记】计算机网络(四)
  • bug exposed beyond app through Intent.getData()
  • 从哪里下载WinPrefetchView最安全?
  • [Ubuntu] 记录系统崩掉进入initramfs模式后的解决方法
  • Linux:进程信号(二.信号的保存与处理、递达、volatile关键字、SIGCHLD信号)
  • Mind 爱好者周刊 第13期 | 人类神经重放和尖波涟漪综述、饥饿对记忆巩固的影响、使用AI从大脑中解码语言、B族维生素与神经精神疾病的关系……
  • 【生成模型】【ComfyUI(三)】使用WebAPI批量调用ComfyUI
  • 网站建设所有权/网址注册查询
  • 莱芜网站优化有哪些/如何优化搜索引擎的搜索功能
  • 做网站需要前置审批/如何做推广引流赚钱
  • 武汉网页推广哪家好/白杨seo课程
  • 影视公司网站模板/广告宣传费用一般多少
  • 网站建设388/常见的网络推广方法有哪些