2017-10-04 76 views
0

我试图插入一个非常大的CSV文件到InfluxDB和我将它看作在Python:麻烦插入数据帧进入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,我M个接收这个错误(截断):

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

因此,我发现我必须明确指定协议是JSON,因为这样:

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

除了在NaN值与插补法填充(JSON具有用于那些不支持)。我认为我的印象是json是默认的,我猜并非如此。

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