python-3.x - pymongo如何将csv文件插入mongodb
问题描述
我有一个包含以下数据的 csv 文件“data.csv”:
我现在正在尝试使用以下代码将此 csv 上传到 MongoDB:
import pandas as pd
import os
path="/Users/xxxx/Desktop/" -- Filepath
os.chdir(path)
from pymongo import MongoClient
client = MongoClient('internal-xxx.xxx.ai:1234',
username='xxx',
password='xxx',
authMechanism='SCRAM-SHA-1')
db=client["dbname"]
-- Creating a new collection with name "collectionname"
db_c=db["collectionname"]
x=db_c.count_documents({}) -- Since its new one the count will be empty
def csv_to_json(filename, header=None):
data = pd.read_csv(filename, header=header)
return data.to_dict('records')
print(csv_to_json('inspector1.csv'))
-- Below is the print result
# [{0: 'RAISED_BY', 1: 'RAISED_ON', 2: 'A', 3: 'B', 4: 'C'},
# {0: '32050', 1: '3/5/20', 2: '0', 3: '0', 4: '50'},
# {0: '32217', 1: '3/5/20', 2: '0', 3: '0', 4: '6'},
# {0: '46212', 1: '3/5/20', 2: '0', 3: '0', 4: '7'},
# {0: '31871', 1: '3/5/20', 2: '0', 3: '0', 4: '6'},
# {0: '32567', 1: '3/5/20', 2: '0', 3: '0', 4: '6'}]
db_c.insert_many(csv_to_json('inspector.csv'))
# Error encountered : InvalidDocument: documents must have only string keys, key was 0
我认为问题在于将 csv 转换为 json,为什么我会在所有数据元素的前面得到 0:,1:,2: 等。你们能帮我整理一下这个吗?基本上我想将我的 csv 文件插入到 Mongo DB 中?
解决方案
pd.read_csv()
正在使用默认的 pandas 索引。要使其根据标头进行索引,请使用header=0
参数;在您的情况下,更改将是:
db_c.insert_many(csv_to_json('inspector.csv', header=0))
推荐阅读
- amazon-web-services - AWS API Gateway 与 SNS 集成的工作示例,包括 MessageAttributes
- vim - 跳转到包含文本的下一行(vim)
- c# - ZipArchive 无效的 Zip 文件
- css - div内的图像和文本之间的对齐不起作用
- javascript - javascript 对象是数据结构名称还是另一个类的实例?
- flutter - 使用 image_clicker 和 pdf 包将手机点击的图像转换为 pdf
- python - 无法在 centos 7 中为 python 设置 SonarQube
- java - 如何重新注册zookeeper手表
- python - 公共类属性实际上有什么用?
- spring - Spring Boot 在使用 requestMatchers() 时也会忽略 logout() 配置