哪个网站有png素材,公司变更股东的流程及所提交的材料,wordpress手机端顶部导航栏,网站流量分析表本文介绍基于Java语言#xff0c;读取InfluxDB数据库的方法#xff0c;包括读取InfluxDB的所有数据库#xff0c;以及指定数据库中的measurement、field、tag等。 首先#xff0c;创建一个Java项目#xff0c;用于撰写代码。如果大家是基于IDEA来创建项目#xff0c;则可… 本文介绍基于Java语言读取InfluxDB数据库的方法包括读取InfluxDB的所有数据库以及指定数据库中的measurement、field、tag等。 首先创建一个Java项目用于撰写代码。如果大家是基于IDEA来创建项目则可以参考文章IDEA新建项目并撰写Java代码的方法https://blog.csdn.net/zhebushibiaoshifu/article/details/140302869中提到的方法。 接下来配置所需要的依赖这里我们就选择可用于与InfluxDB数据库进行交互的、官方支持的Java客户端库influxdb-java。因为我是基于Maven来配置依赖的所以就在项目的pom.xml文件中添加如下的内容。
dependenciesdependencygroupIdorg.influxdb/groupIdartifactIdinfluxdb-java/artifactIdversion2.8/version/dependency
/dependencies添加上述代码后如下图所示。 刚刚增添完毕上述代码时pom.xml文件中influxdb-java依赖会飘红我们就刷新一下Maven让他下载对应的依赖如下图所示。 随后可以在Dependencies中看到已经配置好了所需的influxdb-java依赖如下图所示。 接下来即可开始撰写代码。这里的这个代码仅仅是一个非常简单的示例只是我当初学习用Java语言读取InfluxDB数据库用的大家可以在这个基础上按照自己的需求进一步丰富代码逻辑。完整代码如下所示。
import org.influxdb.InfluxDB;
import org.influxdb.InfluxDBFactory;
import org.influxdb.dto.Query;
import org.influxdb.dto.QueryResult;
import org.jetbrains.annotations.NotNull;import java.util.List;
import java.util.Scanner;public class Main {private static final String url http://127.0.0.1:8086;private static final String username root;private static final String password ;public static void main(String[] args) {InfluxDB influxDB InfluxDBFactory.connect(url, username, password);showDatabases(influxDB);showMeasurements(influxDB);showData(influxDB);}// Show database(s)private static void showDatabases(InfluxDB influxDB) {QueryResult queryResult influxDB.query(new Query(SHOW DATABASES));QueryResult.Series series queryResult.getResults().get(0).getSeries().get(0);ListListObject databaseList series.getValues();System.out.println(Database(s) is(are):);for (ListObject innerList: databaseList) {for (Object object: innerList) {System.out.println(object);}}System.out.println();}// Show measurement(s)private static void showMeasurements(InfluxDB influxDB) {Scanner scanner new Scanner(System.in);System.out.print(Please enter the database name: );String databaseName scanner.nextLine();try {ListListObject measurementsList influxDB.query(new Query(SHOW MEASUREMENTS ON databaseName)).getResults().get(0).getSeries().get(0).getValues();System.out.println(Measurement(s) for databaseName is(are):);for (ListObject innerList: measurementsList) {for (Object object: innerList) {System.out.println(object);}}System.out.println();showTagKeys(influxDB, databaseName);showTagValues(influxDB, databaseName);showFieldKeys(influxDB, databaseName);} catch (Exception e) {System.out.println(Measurement(s) for databaseName is empty!);return;}}// Show tag keysprivate static void showTagKeys(InfluxDB influxDB, String databaseName) {ListListObject tagKeysList influxDB.query(new Query(SHOW TAG KEYS ON databaseName)).getResults().get(0).getSeries().get(0).getValues();System.out.println(Tag Key(s) for databaseName is(are):);for (ListObject innerList: tagKeysList) {for (Object object: innerList) {System.out.println(object);}}System.out.println();}// Show tag valuesprivate static void showTagValues(InfluxDB influxDB, String databaseName) {Scanner scanner new Scanner(System.in);System.out.print(Please enter the tag key name: );String TagKey scanner.nextLine();ListListObject tagValuesList influxDB.query(new Query(SHOW TAG VALUES ON databaseName WITH KEY TagKey)).getResults().get(0).getSeries().get(0).getValues();System.out.println(Tag Value(s) is(are):);for (ListObject innerList: tagValuesList) {System.out.println(innerList.get(0) : innerList.get(1));}System.out.println();}// Show field keysprivate static void showFieldKeys(InfluxDB influxDB, String databaseName) {ListListObject fieldKeysList influxDB.query(new Query(SHOW FIELD KEYS ON databaseName)).getResults().get(0).getSeries().get(0).getValues();System.out.println(Field Key(s) and Type(s) are:);for (ListObject innerList: fieldKeysList) {System.out.println(innerList.get(0) : innerList.get(1));}System.out.println();}// Show dataprivate static void showData(NotNull InfluxDB influxDB) {Scanner scanner new Scanner(System.in);System.out.print(Please enter the database name: );String databaseName scanner.nextLine();System.out.print(Please enter the measurements name: );String measurementName scanner.nextLine();influxDB.setDatabase(databaseName);QueryResult dataResult influxDB.query(new Query(SELECT * FROM measurementName));System.out.println(dataResult);}
}代码整体思路也很简单这里再简单介绍一下代码的流程。 首先需要连接到InfluxDB数据库。在这一部分通过InfluxDBFactory.connect创建了一个本地运行的InfluxDB实例的连接使用默认的URL 也就是http://127.0.0.1:8086并配置用户名和密码。 随后showDatabases方法执行了SHOW DATABASES用以查询并打印出InfluxDB实例所有数据库的名字。从这一部分的代码开始后续所有代码在操作数据库方面的逻辑都是很类似的——通过模拟并执行InfluxDB的数据库语句来实现各项操作。 接下来showMeasurements方法可以让我们输入一个数据库名然后执行SHOW MEASUREMENTS查询来获取该数据库中所有measurement的名称并打印出来。如果measurement为空则会输出相应的提示信息。 其次showTagKeys方法用于列出指定数据库的所有tag key其后的showTagValues方法则可以让我们输入一个tag key名随后查询并打印出该tag key对应的所有tag value。 紧接着showFieldKeys方法用于列出指定数据库中所有的field key。 最后showData方法让我们输入一个数据库和measurement的名称随后查询、获取该measurement下的所有数据并将结果直接打印出来。当然我这里当初只是为了验证是否读取到了measurement所以是直接打印的在实际应用中大家可以修改一下代码更优雅地格式化输出。 至此大功告成。
欢迎关注疯狂学习GIS