我试图将一个非常大的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镜像。仅供参考。
答案 0 :(得分:0)
所以我意识到我必须明确地将协议指定为json,因此:
influx_pd.write_points(frame, measurement='enroll_pd', protocol='json')
除了使用插补方法填充NaN值(JSON不支持这些值)。我认为这些文档我认为json是默认的,我想情况并非如此。
当然,这可能只是一种解决方案。我欢迎其他可行的替代解决方案。