如何使用QuestDB Java Sender发送IPv4数据类型?
使用QuestDB Sender组件发送IPv4数据的方案
QuestDB的ip4类型底层以64位整数存储,因此可以通过以下步骤发送IPv4数据:
将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); }修改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(); }对应表结构定义
建表时将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
相关产品推荐
相关产品推荐

