mongodb数据导出为csv,excel表格(通用)

本文介绍了一款实用工具,该工具能够将MongoDB数据库中的数据导出为CSV文件,并进一步转换为Excel格式,方便用户进行数据分析和处理。整个过程涉及Python编程,包括使用pymongo连接MongoDB数据库、openpyxl操作Excel文件等关键技术。
摘要由CSDN通过智能技术生成
import openpyxl
from openpyxl import load_workbook
from pymongo import MongoClient
import csv
import pandas as pd
import xlwt
"""
user 用户名
pwd 密码
server 服务器ip
port 数据库端口号
db_name 数据库名
table_name 集合名
form_data 想要获取的字段列表
"""
def export(user, pwd, server, port, db_name, table_name, form_data):
    uri = 'mongodb://' + user + ':' + pwd + '@' + server + ':' + port +'/'
    client = MongoClient(uri)
    db = client[db_name][table_name]
    with open(f"{db_name}_{table_name}.csv", "w", newline='', encoding='gbk') as csvfilewrite:
        write = csv.writer(csvfilewrite)
        write.writerow(form_data)
        allRecordRes = db.find()

        for record in allRecordRes:
            recordValueLst = []
            for field in form_data:
                if field not in record:
                    recordValueLst.append("None")
                else:
                    recordValueLst.append(record[field])
            try:
                write.writerow(recordValueLst)
            except Exception as e:
                print(f"write csv exception.e = {e}")

def csv_to_xlsx(db_name, table_name, csvfile, outfile):
    # 创建工作簿对象
    work_book = openpyxl.Workbook()
    # 创建sheet
    work_sheet = work_book.create_sheet(title=f"{db_name}_{table_name}")
    # 打开csv文件
    csvfile = open(csvfile, encoding='gbk')
    # 获取csv.reader
    lines = csv.reader(csvfile)
    # row
    row = 1
    # 写入从csv读取的内容 如使用了以上代码 这里行数要加一
    for line in lines:
        lin = 1
        for i in line:
            work_sheet.cell(row=row, column=lin).value = i
            lin += 1
        row += 1
    # 关闭文件
    csvfile.close()
    # 保存工作表
    work_book.save(outfile)

if __name__ == '__main__':
	#用户名
    user = "user"
    #密码
    pwd = "pwd"
    #服务器ip
    server = "server"
    #服务器端口号
    port = "port"
    #数据库名
    db_name = "db_name"
     #集合名
    table_name = "table_name"
    #想要获取字段的列表
    form_data = [
        'question',
        'similar_question',
        'type',
        'intent',
        'entity',
        'answer',
    ]
    file = './file.csv'
    outfile = './outfile.xlsx'
    #数据库数据导出为csv格式
    export(user, pwd, server, port, db_name, table_name, form_data)
    #csv格式转换成excel格式
    csv_to_xlsx(db_name, table_name, file, outfile)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值