如何将不同数据类型的csv推送到mongodb数据库

时间:2015-01-05 08:14:17

标签: python mongodb csv

必须使用python将csv的数据推送到mongodb数据库。我的csv包含float,datetime&的数据类型。字符串格式。但是在将数据传递给mongo之后,它反映为字符串。

import csv
import json
import pandas as pd
import sys, getopt, pprint
from pymongo import MongoClient
csvfile = open("C://test1//Jan02//final-current.csv", "r")
        reader = csv.DictReader( csvfile )
        mongo_client=MongoClient() 
        db=mongo_client.January
        db.segment.drop()
        header= ["Instrument Name", "Date", "High", "Low", "Open", "Close", "V"]
        for each in reader:
            row={}
            for field in header:
                row[field]=each[field]
            db.segment3.insert(row)
        csvfile.close()

我的输出:

{
        "_id" : ObjectId("54aa38eafb2a03c4f4b46e78"),
        "Instrument Name" : "HAVELLS15MARFUT",
        "High" : "280.85",
        "Low" : "280.85",
        "V" : "1000",
        "Date" : "2015-02-01 13:40:00",
        "Close" : "280.85",
        "Open" : "280.85"
}

但是我在我的csv中查看,它显示开放,高,低,音量,接近浮动类型& datetime数据类型中的日期。预计的结果是字符串。帮助我纠正问题。

提前致谢

1 个答案:

答案 0 :(得分:0)

一个非常简单的选择就是使用映射字典转换数据:

csv_values = {"Instrument Name": "my_header", "High": "100", "Low": "56"}
header = {"Instrument Name": str, "High": int, "Low": int}
for k, v in header.iteritems():
    new_value = v(csv_values[k])
    print new_value, type(new_value)

输出:

100 <type 'int'>
56 <type 'int'>
my_header <type 'str'>

只需确定数据的数据类型并绑定转换函数,就可以使用更复杂的函数并检查数据的完整性,最后只需将其保存到MongoDB。