【发布时间】:2016-09-29 15:56:00
【问题描述】:
我使用influx命令(CLI)写了一个数据如下:
CREATE DATABASE mydb
USE mydb
insert test value=1234567890123456789i
然后,我使用 influx 命令 (CLI) 读取数据
> select * from test
name: test
time value
1475129299322514085 1234567890123456789
好的。没问题。
但是当我使用带有 influxdb-java-2.3.jar 的 JAVA 程序读取数据时:
public static void main(String[] args) {
InfluxDB conn = InfluxDBFactory.connect(DB_URL, DB_USER, DB_PASSWD);
String sql = "SELECT time,value from test";
Query query = new Query(sql, DB_NAME);
QueryResult result = conn.query(query, TimeUnit.NANOSECONDS);
Series series = result.getResults().get(0).getSeries().get(0);
System.out.println(series.getColumns().get(0) + "=" + series.getValues().get(0).get(0) + " " + series.getValues().get(0).get(0).getClass().getName());
System.out.println(series.getColumns().get(1) + "=" + series.getValues().get(0).get(1) + " " + series.getValues().get(0).get(1).getClass().getName());
}
结果是:
time=1.47512929932251418E18 java.lang.Double
value=1.23456789012345677E18 java.lang.Double
即使查询选项是 NANOSECONDS,为什么在 “Double” 中返回 "time"?
为什么插入了“i”后缀的数据却在“Double”中返回了“value”?
我期望的“价值”是1234567890123456789,而不是1234567890123456770 (=1.23456789012345677E18)。
如何使用 influxdb-java.jar 获得“长”值而不会出现舍入错误?
【问题讨论】:
-
您是否在 GitHub 上向项目团队提出过这个问题? (github.com/influxdata/influxdb)
-
无法编辑我的评论。这是 Java 客户端的正确链接:github.com/influxdata/influxdb-java