繁体   English   中英

mongodb python 导入 csv

[英]mongodb python import csv

我正在尝试将 csv 导入 Mongodb,然后从 Mongodb 执行命令以获取数据。

这是我的代码。

import pandas as pd
from pymongo import MongoClient

client = MongoClient()
db = client.test # client.database_name
collection = db.test #db.collection_name


def csv_to_json(filename, header=None):
    data = pd.read_csv(filename, header=header)
    return data.to_dict('records')

collection.insert_many(csv_to_json('test.csv'))

但是,我遇到了这个错误。 究竟出了什么问题?

    operation, command, docs, check_keys, ack, opts, ctx)

InvalidDocument: documents must have only string keys, key was 0

默认情况下, read_csv()read_csv()索引数据帧的行和列。 然后to_dict()方法将创建一个具有数字键的字典列表。 MongoDB 中不允许使用数字键; 因此你看到的问题。

因此,假设您的 csv 文件如下所示:

Field1,Field2
a,x
b,y
c,z

那么你需要做的唯一改变是:

collection.insert_many(csv_to_json('test.csv', header=0))

这将告诉 pandas 基于标题行创建一个索引,然后该索引将成为文档中每个字段的键。

pprint.pprint(list(collection.find({}, {'_id': 0})))

给出:

[{'Field1': 'a', 'Field2': 'x'},
 {'Field1': 'b', 'Field2': 'y'},
 {'Field1': 'c', 'Field2': 'z'}]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM