使用Python将DataFrame插入InfluxDB时遇到问题

时间:2017-10-04 22:38:12

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

我试图将一个非常大的CSV文件插入InfluxDB并在Python中插入它:

influx_pd = influxdb.DataFrameClient(host, port, user, password, db, verify_ssl=False)

for frame in pd.read_csv(infile, chunksize=batch_count):
    frame.set_index(pd.DatetimeIndex(frame[date_pk]), inplace=True)
    frame.dropna(axis=1, how='all')
    influx_pd.write_points(frame, 'patients')

但是,在第一次调用write_points时,我收到此错误(截断):

raise InfluxDBClientError(response.content, response.status_code)
influxdb.exceptions.InfluxDBClientError: 400: {"error":"unable to parse 'enroll_pd Pt Id=\"21.0\",Admit Date=\"2010-12-05\", ... MRSA Screening=\"Negative\" 1291507200000000000': invalid field format\nunable to parse ... (ellipses used to truncate)

我读过关于InfluxDB和NaN值(我的CSV文件确实包含)的问题,所以我尝试为NaN值插入占位符值但收到相同的结果。有人可以帮我在我的代码中找到问题吗?非常感谢。

我正在使用InfluxDB 1.3 Docker镜像。仅供参考。

1 个答案:

答案 0 :(得分:0)

所以我意识到我必须明确地将协议指定为json,因此:

influx_pd.write_points(frame, measurement='enroll_pd', protocol='json')

除了使用插补方法填充NaN值(JSON不支持这些值)。我认为这些文档我认为json是默认的,我想情况并非如此。

当然,这可能只是一种解决方案。我欢迎其他可行的替代解决方案。