方式一:insertRecord插入没有指定类型
public static void insert()throws Exception{
Session session = new Session("127.0.0.1",6667,"root","root");
session.open();
String deviceId = "root.sestest.wf01.wt01";
List<String> measurements = new ArrayList<>(3);
measurements.add("s0");
measurements.add("s1");
measurements.add("s2");
for(long i = 5000 ;i <6000 ;i++){
List<String> values = new ArrayList<>(3);
values.add("5");
values.add("6");
values.add("7");
session.insertRecord(deviceId,i,measurements,values);
}
session.close();
}
方式二:insertRecord插入的时候带TSDataType
public static void insert2()throws Exception{
Session session = new Session("127.0.0.1",6667,"root","root");
session.open();
String deviceId = "root.sestest.wf01.wt01";
List<String> measurements = new ArrayList<>(3);
measurements.add("s0");
measurements.add("s1");
measurements.add("s2");
for(long i = 1000 ;i <5000 ;i++){
List<Object> values = new ArrayList<>(3);
List<TSDataType> types = new ArrayList<>(3);
values.add(1);
types.add(TSDataType.INT32);
values.add(2);
types.add(TSDataType.INT32);
values.add(3);
types.add(TSDataType.INT32);
session.insertRecord(deviceId,i,measurements,types,values);
}
session.close();
}
方式三:insertTablet
public static void insert3()throws Exception{
Session session = new Session("127.0.0.1",6667,"root","root");
session.open();
String deviceId = "root.sestest.wf01.wt01";
List<MeasurementSchema> schemaList = new ArrayList<>();
schemaList.add(new MeasurementSchema("s0", TSDataType.INT32));
schemaList.add(new MeasurementSchema("s1", TSDataType.INT32));
schemaList.add(new MeasurementSchema("s2", TSDataType.INT32));
//根据maxRowNumber初始化多少个timestamp和values测量点个数
Tablet tablet = new Tablet(deviceId, schemaList, 1000);
Object[] values = tablet.values;
for (long time = 0; time < 1000; time++) {
int row = tablet.rowSize++;
tablet.timestamps[row]=time;
for (int i = 0; i < 3; i++) {
((int[])values[i])[row] = 99;
}
}
if (tablet.rowSize != 0) {
session.insertTablet(tablet);
tablet.reset();
}
session.close();
}
附上values结构
方式四:JDBC
总结
insertTablet > insertRecord指定类型 > insertRecord不指定类型 > JDBC
以上是个人觉得几种方式性能排序
insertTablet方式需要Tablet中的测量点都有数据,如果库中root.sestest.wf01.wt01设备还有s3测量点。这样也是可以插的
time | s0 | s1 | s2 |
1 | 99 | 99 | 99 |
2 | 99 | 99 | 99 |
3 | 99 | 99 | 99 |
insertRecord 没有类型信息,则服务器必须进行类型推断