首页 > 解决方案 > 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 中?

标签: python-3.xmongodbpymongo-3.x

解决方案


pd.read_csv()正在使用默认的 pandas 索引。要使其根据标头进行索引,请使用header=0参数;在您的情况下,更改将是:

db_c.insert_many(csv_to_json('inspector.csv', header=0))

推荐阅读