You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用QuestDB Java Sender发送IPv4数据类型?

使用QuestDB Sender组件发送IPv4数据的方案

QuestDB的ip4类型底层以64位整数存储,因此可以通过以下步骤发送IPv4数据:

  1. 将IPv4字符串转为long型数值
    用Java的InetAddress类解析IPv4地址,再将字节数组转换为无符号long值,工具方法示例:

    import java.net.InetAddress;
    import java.net.UnknownHostException;
    
    private static long ipv4ToLong(String ipv4Str) throws UnknownHostException {
        byte[] ipBytes = InetAddress.getByName(ipv4Str).getAddress();
        // 转换为无符号long,避免负数问题
        return ((ipBytes[0] & 0xFFL) << 24) |
               ((ipBytes[1] & 0xFFL) << 16) |
               ((ipBytes[2] & 0xFFL) << 8) |
               (ipBytes[3] & 0xFFL);
    }
    
  2. 修改Sender代码发送数据
    调用longColumn()方法传入转换后的long值即可,对应表结构中该列需定义为IP4类型:

    try {
        sender.table("weather_sensor")
                .symbol("id", "dubai2" + i%100)
                .longColumn("temperature", 41)
                .doubleColumn("humidity", 0.34)
                .longColumn("device_ip", ipv4ToLong("192.168.1.100")) // 新增IPv4列
                .atNow();
    } catch (UnknownHostException e) {
        e.printStackTrace();
    }
    
  3. 对应表结构定义
    建表时将IPv4列指定为IP4类型,这样QuestDB会自动识别并支持IP格式的查询:

    CREATE TABLE weather_sensor (
        id SYMBOL,
        temperature LONG,
        humidity DOUBLE,
        device_ip IP4,
        timestamp TIMESTAMP
    ) TIMESTAMP(timestamp) PARTITION BY DAY;
    

内容的提问来源于stack exchange,提问作者Doncarleone512

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 16:07:40