最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java讀取InfluxDB數(shù)據(jù)庫(kù)的方法詳解

 更新時(shí)間:2025年01月13日 11:05:48   作者:瘋狂學(xué)習(xí)GIS  
本文介紹基于Java語(yǔ)言,讀取InfluxDB數(shù)據(jù)庫(kù)的方法,包括讀取InfluxDB的所有數(shù)據(jù)庫(kù),以及指定數(shù)據(jù)庫(kù)中的measurement、field、tag等,感興趣的小伙伴跟著小編一起來(lái)看看吧

首先,創(chuàng)建一個(gè)Java項(xiàng)目,用于撰寫代碼。

接下來(lái),配置所需要的依賴;這里我們就選擇可用于與InfluxDB數(shù)據(jù)庫(kù)進(jìn)行交互的、官方支持的Java客戶端庫(kù)influxdb-java。因?yàn)槲沂腔?strong>Maven來(lái)配置依賴的,所以就在項(xiàng)目的pom.xml文件中,添加如下的內(nèi)容。

<dependencies>
    <dependency>
        <groupId>org.influxdb</groupId>
        <artifactId>influxdb-java</artifactId>
        <version>2.8</version>
    </dependency>
</dependencies>

添加上述代碼后,如下圖所示。

剛剛增添完畢上述代碼時(shí),pom.xml文件中influxdb-java依賴會(huì)飄紅,我們就刷新一下Maven,讓他下載對(duì)應(yīng)的依賴;如下圖所示。

隨后,可以在Dependencies中看到已經(jīng)配置好了所需的influxdb-java依賴,如下圖所示。

接下來(lái),即可開始撰寫代碼。這里的這個(gè)代碼僅僅是一個(gè)非常簡(jiǎn)單的示例,只是我當(dāng)初學(xué)習(xí)用Java語(yǔ)言讀取InfluxDB數(shù)據(jù)庫(kù)用的;大家可以在這個(gè)基礎(chǔ)上,按照自己的需求進(jìn)一步豐富代碼邏輯。完整代碼如下所示。

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);
        List<List<Object>> databaseList = series.getValues();
        System.out.println("Database(s) is(are):");
        for (List<Object> 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 {
            List<List<Object>> 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 (List<Object> 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 keys
    private static void showTagKeys(InfluxDB influxDB, String databaseName) {
        List<List<Object>> 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 (List<Object> innerList: tagKeysList) {
            for (Object object: innerList) {
                System.out.println(object);
            }
        }
        System.out.println();
    }

    // Show tag values
    private 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();

        List<List<Object>> 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 (List<Object> innerList: tagValuesList) {
            System.out.println(innerList.get(0) + ": " + innerList.get(1));
        }
        System.out.println();
    }

    // Show field keys
    private static void showFieldKeys(InfluxDB influxDB, String databaseName) {
        List<List<Object>> 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 (List<Object> innerList: fieldKeysList) {
            System.out.println(innerList.get(0) + ": " + innerList.get(1));
        }
        System.out.println();
    }

    // Show data
    private 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);
    }
}

代碼整體思路也很簡(jiǎn)單,這里再簡(jiǎn)單介紹一下代碼的流程。

首先,需要連接到InfluxDB數(shù)據(jù)庫(kù)。在這一部分,通過(guò)InfluxDBFactory.connect創(chuàng)建了一個(gè)本地運(yùn)行的InfluxDB實(shí)例的連接,使用默認(rèn)的URL (也就是http://127.0.0.1:8086),并配置用戶名和密碼。

隨后,showDatabases方法執(zhí)行了SHOW DATABASES,用以查詢并打印出InfluxDB實(shí)例所有數(shù)據(jù)庫(kù)的名字。從這一部分的代碼開始,后續(xù)所有代碼在操作數(shù)據(jù)庫(kù)方面的邏輯都是很類似的——通過(guò)模擬并執(zhí)行InfluxDB的數(shù)據(jù)庫(kù)語(yǔ)句,來(lái)實(shí)現(xiàn)各項(xiàng)操作。

接下來(lái),showMeasurements方法可以讓我們輸入一個(gè)數(shù)據(jù)庫(kù)名,然后執(zhí)行SHOW MEASUREMENTS查詢來(lái)獲取該數(shù)據(jù)庫(kù)中所有measurement的名稱,并打印出來(lái)。如果measurement為空,則會(huì)輸出相應(yīng)的提示信息。

其次,showTagKeys方法用于列出指定數(shù)據(jù)庫(kù)的所有tag key,其后的showTagValues方法則可以讓我們輸入一個(gè)tag key名,隨后查詢并打印出該tag key對(duì)應(yīng)的所有tag value。

緊接著,showFieldKeys方法用于列出指定數(shù)據(jù)庫(kù)中所有的field key。

最后,showData方法讓我們輸入一個(gè)數(shù)據(jù)庫(kù)和measurement的名稱,隨后查詢、獲取該measurement下的所有數(shù)據(jù),并將結(jié)果直接打印出來(lái)。當(dāng)然,我這里當(dāng)初只是為了驗(yàn)證是否讀取到了measurement,所以是直接打印的;在實(shí)際應(yīng)用中,大家可以修改一下代碼,更優(yōu)雅地格式化輸出。

至此,大功告成。

以上就是Java讀取InfluxDB數(shù)據(jù)庫(kù)的方法詳解的詳細(xì)內(nèi)容,更多關(guān)于Java讀取InfluxDB的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

德江县| 周至县| 宝丰县| 栾川县| 芦山县| 安阳市| 广水市| 祁门县| 蓬莱市| 广汉市| 吐鲁番市| 舟山市| 石门县| 钟山县| 盐山县| 新丰县| 西和县| 即墨市| 安化县| 岑巩县| 壶关县| 定远县| 四平市| 岚皋县| 南昌县| 静安区| 尖扎县| 确山县| 禹州市| 天气| 长宁区| 南澳县| 德令哈市| 富宁县| 应用必备| 什邡市| 景谷| 丹阳市| 观塘区| 固始县| 资阳市|