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)
mongodb数据导出为csv,excel表格(通用)
最新推荐文章于 2023-03-02 18:06:18 发布
本文介绍了一款实用工具,该工具能够将MongoDB数据库中的数据导出为CSV文件,并进一步转换为Excel格式,方便用户进行数据分析和处理。整个过程涉及Python编程,包括使用pymongo连接MongoDB数据库、openpyxl操作Excel文件等关键技术。
摘要由CSDN通过智能技术生成