使用TDengine的http方式操作数据库,前提:启动taosadapter,
https://download.csdn.net/download/qq_22071421/87884724?spm=1001.2014.3001.5503
工具方法:
@Slf4j
@Component
public class TaosTDengineManager {
private static final String baseUrl="/rest/sql";
@Value("${taosTDengine.port}")
private String port;
@Value("${taosTDengine.user}")
private String user;
@Value("${taosTDengine.host}")
private String host;
@Value("${taosTDengine.password}")
private String password;
@Value("${taosTDengine.auth}")
private String auth;
//表是否存在
public boolean ifTableExists(String dataName,String tableName){
List<String> list = queryTables(dataName);
if(CollUtil.isNotEmpty(list)&&list.contains(tableName)){
return true;
}
return false;
}
public List<String> queryTables(String dataName){
String sql="SHOW "+dataName+"."+"TABLES";
JSONObject object = restHandle(sql);
List<String> list=new ArrayList<>();
if (object==null) {
return list;
}
if("succ".equals(object.getString("status"))){
List<List> data = JSONArray.parseArray(object.getString("data"), List.class);
for(List li:data){
if(CollUtil.isNotEmpty(li)){
list.add(li.get(0).toString());
}
}
}
return list;
}
//数据库表增加一列
public boolean alterField(String dataName,String tableName,String field,String dataType){
String sql="ALTER TABLE "+dataName+"."+tableName+" ADD COLUMN "+field+" "+dataType;
return sqlHandle(sql);
}
//数据库表数据增加一列
public boolean insertData(String dataName,String tableName,String field,String data){
String sql="INSERT INTO "+dataName+"."+tableName+" ("+field+") VALUES ("+data+");";
return sqlHandle(sql);
}
//创建表
public boolean createTable(String dataName,String tableName,String field){
String sql="create table if not exists "+dataName+"."+tableName+" ("+field+")";
return sqlHandle(sql);
}
//移除表
public boolean dropTable(String dataName,String tableName){
String sql="DROP table IF EXISTS "+dataName+"."+tableName;
return sqlHandle(sql);
}
//数据库是否存在
public boolean ifDataExists(String data){
List<String> list = dataNameList();
if(CollUtil.isNotEmpty(list)&&list.contains(data)){
return true;
}
return false;
}
//创建数据库
public boolean createData(String dataName){
String sql="CREATE DATABASE IF NOT EXISTS "+dataName+" KEEP 3650 COMP 2 REPLICA 1 QUORUM 1 BLOCKS 3";
return sqlHandle(sql);
}
//移除数据库
public boolean dropData(String dataName){
String sql="DROP DATABASE IF EXISTS "+dataName;
return sqlHandle(sql);
}
public boolean sqlHandle(String sql){
String s = HttpUtils.sendPost(getUrl(baseUrl), sql, header());
JSONObject object = JSONObject.parseObject(s);
if("succ".equals(object.getString("status"))){
return true;
}
log.info(JSONObject.toJSONString(object));
return false;
}
public List<String> dataNameList(){
List<String> list=new ArrayList<>();
JSONObject object = restHandle("SHOW DATABASES");
if (object==null) {
return list;
}
if("succ".equals(object.getString("status"))){
List<List> data = JSONArray.parseArray(object.getString("data"), List.class);
for(List li:data){
if(CollUtil.isNotEmpty(li)){
list.add(li.get(0).toString());
}
}
}
return list;
}
public JSONObject restHandle(String req){
String s = HttpUtils.sendPost(getUrl(baseUrl), req, header());
if(StringUtils.isBlank(s)){
return null;
}
return JSONObject.parseObject(s);
}
public String getUrl(String baseUrl){
return "http://"+host+":"+port+baseUrl;
}
Map<String,String> header(){
Map<String,String> map=new HashMap<>();
map.put("Authorization",auth);
return map;
}
}
第一个字段必须为timestamp,且值不能过长,生成时间工具方法getNowTimeMic()
public static String toDateTimeString(Long time, TimeUnit unit, String format) {
Long nanos = 0L;
Long convertTime=null;
if (unit.equals(TimeUnit.NANOSECONDS)) {
nanos = time % 1000_000_000;
convertTime=time/1000_000;
} else if (unit.equals(TimeUnit.MICROSECONDS)) {
nanos = time % 1000_000*1000;
convertTime = time/1000;
} else if (unit.equals(TimeUnit.MILLISECONDS)) {
nanos = time % 1000*1000_000;
convertTime=time;
}
Calendar calendar=Calendar.getInstance();
calendar.setTimeInMillis(convertTime);
LocalDateTime localDateTime = LocalDateTime.of(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)+1, calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND), nanos.intValue());
return localDateTime.format(DateTimeFormatter.ofPattern(format));
}
public static String getNowTimeMic(){
return UavManager.toDateTimeString(new Date().getTime(), TimeUnit.MILLISECONDS,"yyyy-MM-dd HH:mm:ss.SSS");
}
修改配置
taosTDengine:
port: 6041
user: root
password: taosdata
host:
auth: