0

我正在尝试将一个非常大的 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 映像,仅供参考。

4

1 回答 1

0

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

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

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

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

于 2017-10-05T00:49:44.847 回答