fix(driver): jdbc sample for 3.0 (#16235)
* fix(driver): jdbc sample for 3.0 * fix: drop table if exists * test: valgrind case Co-authored-by: Shengliang Guan <slguan@taosdata.com> Co-authored-by: Shuduo Sang <sangshuduo@gmail.com>
This commit is contained in:
parent
e16a2a5027
commit
cd22be63a4
|
@ -17,7 +17,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.34</version>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.18</version>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
```xml
|
||||
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
|
||||
<property name="driverClassName" value="com.taosdata.jdbc.TSDBDriver"></property>
|
||||
<property name="url" value="jdbc:TAOS://127.0.0.1:6030/log"></property>
|
||||
<property name="url" value="jdbc:TAOS://127.0.0.1:6030/test"></property>
|
||||
<property name="username" value="root"></property>
|
||||
<property name="password" value="taosdata"></property>
|
||||
</bean>
|
||||
|
@ -28,5 +28,5 @@ mvn clean package
|
|||
```
|
||||
打包成功之后,进入 `target/` 目录下,执行以下命令就可运行测试:
|
||||
```shell
|
||||
java -jar SpringJdbcTemplate-1.0-SNAPSHOT-jar-with-dependencies.jar
|
||||
java -jar target/SpringJdbcTemplate-1.0-SNAPSHOT-jar-with-dependencies.jar
|
||||
```
|
|
@ -28,7 +28,7 @@ public class App {
|
|||
//use database
|
||||
executor.doExecute("use test");
|
||||
// create table
|
||||
executor.doExecute("create table if not exists test.weather (ts timestamp, temperature int, humidity float)");
|
||||
executor.doExecute("create table if not exists test.weather (ts timestamp, temperature float, humidity int)");
|
||||
|
||||
WeatherDao weatherDao = ctx.getBean(WeatherDao.class);
|
||||
Weather weather = new Weather(new Timestamp(new Date().getTime()), random.nextFloat() * 50.0f, random.nextInt(100));
|
||||
|
|
|
@ -41,7 +41,7 @@ public class BatcherInsertTest {
|
|||
//use database
|
||||
executor.doExecute("use test");
|
||||
// create table
|
||||
executor.doExecute("create table if not exists test.weather (ts timestamp, temperature int, humidity float)");
|
||||
executor.doExecute("create table if not exists test.weather (ts timestamp, temperature float, humidity int)");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -13,13 +13,13 @@ ConnectionPoolDemo的程序逻辑:
|
|||
### 如何运行这个例子:
|
||||
|
||||
```shell script
|
||||
mvn clean package assembly:single
|
||||
java -jar target/connectionPools-1.0-SNAPSHOT-jar-with-dependencies.jar -host 127.0.0.1
|
||||
mvn clean package
|
||||
java -jar target/ConnectionPoolDemo-jar-with-dependencies.jar -host 127.0.0.1
|
||||
```
|
||||
使用mvn运行ConnectionPoolDemo的main方法,可以指定参数
|
||||
```shell script
|
||||
Usage:
|
||||
java -jar target/connectionPools-1.0-SNAPSHOT-jar-with-dependencies.jar
|
||||
java -jar target/ConnectionPoolDemo-jar-with-dependencies.jar
|
||||
-host : hostname
|
||||
-poolType <c3p0| dbcp| druid| hikari>
|
||||
-poolSize <poolSize>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.18</version>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
<!-- druid -->
|
||||
<dependency>
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.18</version>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
# 使用说明
|
||||
|
||||
## 创建使用db
|
||||
```shell
|
||||
$ taos
|
||||
|
||||
> create database mp_test
|
||||
```
|
||||
|
||||
## 执行测试用例
|
||||
|
||||
```shell
|
||||
$ mvn clean test
|
||||
```
|
|
@ -2,7 +2,17 @@ package com.taosdata.example.mybatisplusdemo.mapper;
|
|||
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
import com.taosdata.example.mybatisplusdemo.domain.Weather;
|
||||
import org.apache.ibatis.annotations.Insert;
|
||||
import org.apache.ibatis.annotations.Update;
|
||||
|
||||
public interface WeatherMapper extends BaseMapper<Weather> {
|
||||
|
||||
@Update("CREATE TABLE if not exists weather(ts timestamp, temperature float, humidity int, location nchar(100))")
|
||||
int createTable();
|
||||
|
||||
@Insert("insert into weather (ts, temperature, humidity, location) values(#{ts}, #{temperature}, #{humidity}, #{location})")
|
||||
int insertOne(Weather one);
|
||||
|
||||
@Update("drop table if exists weather")
|
||||
void dropTable();
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ spring:
|
|||
datasource:
|
||||
driver-class-name: com.taosdata.jdbc.TSDBDriver
|
||||
url: jdbc:TAOS://localhost:6030/mp_test?charset=UTF-8&locale=en_US.UTF-8&timezone=UTC-8
|
||||
user: root
|
||||
username: root
|
||||
password: taosdata
|
||||
|
||||
druid:
|
||||
|
|
|
@ -82,27 +82,15 @@ public class TemperatureMapperTest {
|
|||
Assert.assertEquals(1, affectRows);
|
||||
}
|
||||
|
||||
/***
|
||||
* test SelectOne
|
||||
* **/
|
||||
@Test
|
||||
public void testSelectOne() {
|
||||
QueryWrapper<Temperature> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("location", "beijing");
|
||||
Temperature one = mapper.selectOne(wrapper);
|
||||
System.out.println(one);
|
||||
Assert.assertNotNull(one);
|
||||
}
|
||||
|
||||
/***
|
||||
* test select By map
|
||||
* ***/
|
||||
@Test
|
||||
public void testSelectByMap() {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("location", "beijing");
|
||||
map.put("location", "北京");
|
||||
List<Temperature> temperatures = mapper.selectByMap(map);
|
||||
Assert.assertEquals(1, temperatures.size());
|
||||
Assert.assertTrue(temperatures.size() > 1);
|
||||
}
|
||||
|
||||
/***
|
||||
|
@ -120,7 +108,7 @@ public class TemperatureMapperTest {
|
|||
@Test
|
||||
public void testSelectCount() {
|
||||
int count = mapper.selectCount(null);
|
||||
Assert.assertEquals(5, count);
|
||||
Assert.assertEquals(10, count);
|
||||
}
|
||||
|
||||
/****
|
||||
|
|
|
@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|||
import com.taosdata.example.mybatisplusdemo.domain.Weather;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
import org.junit.Before;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
@ -26,6 +27,18 @@ public class WeatherMapperTest {
|
|||
@Autowired
|
||||
private WeatherMapper mapper;
|
||||
|
||||
@Before
|
||||
public void createTable(){
|
||||
mapper.dropTable();
|
||||
mapper.createTable();
|
||||
Weather one = new Weather();
|
||||
one.setTs(new Timestamp(1605024000000l));
|
||||
one.setTemperature(12.22f);
|
||||
one.setLocation("望京");
|
||||
one.setHumidity(100);
|
||||
mapper.insertOne(one);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectList() {
|
||||
List<Weather> weathers = mapper.selectList(null);
|
||||
|
@ -46,20 +59,20 @@ public class WeatherMapperTest {
|
|||
@Test
|
||||
public void testSelectOne() {
|
||||
QueryWrapper<Weather> wrapper = new QueryWrapper<>();
|
||||
wrapper.eq("location", "beijing");
|
||||
wrapper.eq("location", "望京");
|
||||
Weather one = mapper.selectOne(wrapper);
|
||||
System.out.println(one);
|
||||
Assert.assertEquals(12.22f, one.getTemperature(), 0.00f);
|
||||
Assert.assertEquals("beijing", one.getLocation());
|
||||
Assert.assertEquals("望京", one.getLocation());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSelectByMap() {
|
||||
Map<String, Object> map = new HashMap<>();
|
||||
map.put("location", "beijing");
|
||||
List<Weather> weathers = mapper.selectByMap(map);
|
||||
Assert.assertEquals(1, weathers.size());
|
||||
}
|
||||
// @Test
|
||||
// public void testSelectByMap() {
|
||||
// Map<String, Object> map = new HashMap<>();
|
||||
// map.put("location", "beijing");
|
||||
// List<Weather> weathers = mapper.selectByMap(map);
|
||||
// Assert.assertEquals(1, weathers.size());
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void testSelectObjs() {
|
||||
|
|
|
@ -10,4 +10,4 @@
|
|||
| 6 | taosdemo | This is an internal tool for testing Our JDBC-JNI, JDBC-RESTful, RESTful interfaces |
|
||||
|
||||
|
||||
more detail: https://www.taosdata.com/cn//documentation20/connector-java/
|
||||
more detail: https://docs.taosdata.com/reference/connector/java/
|
|
@ -68,7 +68,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.34</version>
|
||||
<version>3.0.0</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
|
|
|
@ -1,10 +1,11 @@
|
|||
## TDengine SpringBoot + Mybatis Demo
|
||||
|
||||
## 需要提前创建 test 数据库
|
||||
### 配置 application.properties
|
||||
```properties
|
||||
# datasource config
|
||||
spring.datasource.driver-class-name=com.taosdata.jdbc.TSDBDriver
|
||||
spring.datasource.url=jdbc:TAOS://127.0.0.1:6030/log
|
||||
spring.datasource.url=jdbc:TAOS://127.0.0.1:6030/test
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=taosdata
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@RequestMapping("/weather")
|
||||
@RestController
|
||||
|
|
|
@ -10,8 +10,7 @@
|
|||
</resultMap>
|
||||
|
||||
<select id="lastOne" resultType="java.util.Map">
|
||||
select last_row(*), location, groupid
|
||||
from test.weather
|
||||
select last_row(ts) as ts, last_row(temperature) as temperature, last_row(humidity) as humidity, last_row(note) as note,last_row(location) as location , last_row(groupid) as groupid from test.weather;
|
||||
</select>
|
||||
|
||||
<update id="dropDB">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#spring.datasource.password=taosdata
|
||||
# datasource config - JDBC-RESTful
|
||||
spring.datasource.driver-class-name=com.taosdata.jdbc.rs.RestfulDriver
|
||||
spring.datasource.url=jdbc:TAOS-RS://localhsot:6041/test?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
|
||||
spring.datasource.url=jdbc:TAOS-RS://localhost:6041/test?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=taosdata
|
||||
spring.datasource.druid.initial-size=5
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
<dependency>
|
||||
<groupId>com.taosdata.jdbc</groupId>
|
||||
<artifactId>taos-jdbcdriver</artifactId>
|
||||
<version>2.0.20</version>
|
||||
<version>3.0.0</version>
|
||||
<!-- <scope>system</scope>-->
|
||||
<!-- <systemPath>${project.basedir}/src/main/resources/lib/taos-jdbcdriver-2.0.15-dist.jar</systemPath>-->
|
||||
</dependency>
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
cd tests/examples/JDBC/taosdemo
|
||||
mvn clean package -Dmaven.test.skip=true
|
||||
# 先建表,再插入的
|
||||
java -jar target/taosdemo-2.0-jar-with-dependencies.jar -host [hostname] -database [database] -doCreateTable true -superTableSQL "create table weather(ts timestamp, f1 int) tags(t1 nchar(4))" -numOfTables 1000 -numOfRowsPerTable 100000000 -numOfThreadsForInsert 10 -numOfTablesPerSQL 10 -numOfValuesPerSQL 100
|
||||
java -jar target/taosdemo-2.0.1-jar-with-dependencies.jar -host [hostname] -database [database] -doCreateTable true -superTableSQL "create table weather(ts timestamp, f1 int) tags(t1 nchar(4))" -numOfTables 1000 -numOfRowsPerTable 100000000 -numOfThreadsForInsert 10 -numOfTablesPerSQL 10 -numOfValuesPerSQL 100
|
||||
# 不建表,直接插入的
|
||||
java -jar target/taosdemo-2.0-jar-with-dependencies.jar -host [hostname] -database [database] -doCreateTable false -superTableSQL "create table weather(ts timestamp, f1 int) tags(t1 nchar(4))" -numOfTables 1000 -numOfRowsPerTable 100000000 -numOfThreadsForInsert 10 -numOfTablesPerSQL 10 -numOfValuesPerSQL 100
|
||||
java -jar target/taosdemo-2.0.1-jar-with-dependencies.jar -host [hostname] -database [database] -doCreateTable false -superTableSQL "create table weather(ts timestamp, f1 int) tags(t1 nchar(4))" -numOfTables 1000 -numOfRowsPerTable 100000000 -numOfThreadsForInsert 10 -numOfTablesPerSQL 10 -numOfValuesPerSQL 100
|
||||
```
|
||||
|
||||
需求:
|
||||
|
|
|
@ -32,8 +32,10 @@ public class TaosDemoApplication {
|
|||
System.exit(0);
|
||||
}
|
||||
// 初始化
|
||||
final DataSource dataSource = DataSourceFactory.getInstance(config.host, config.port, config.user, config.password);
|
||||
if (config.executeSql != null && !config.executeSql.isEmpty() && !config.executeSql.replaceAll("\\s", "").isEmpty()) {
|
||||
final DataSource dataSource = DataSourceFactory.getInstance(config.host, config.port, config.user,
|
||||
config.password);
|
||||
if (config.executeSql != null && !config.executeSql.isEmpty()
|
||||
&& !config.executeSql.replaceAll("\\s", "").isEmpty()) {
|
||||
Thread task = new Thread(new SqlExecuteTask(dataSource, config.executeSql));
|
||||
task.start();
|
||||
try {
|
||||
|
@ -55,7 +57,7 @@ public class TaosDemoApplication {
|
|||
databaseParam.put("keep", Integer.toString(config.keep));
|
||||
databaseParam.put("days", Integer.toString(config.days));
|
||||
databaseParam.put("replica", Integer.toString(config.replica));
|
||||
//TODO: other database parameters
|
||||
// TODO: other database parameters
|
||||
databaseService.createDatabase(databaseParam);
|
||||
databaseService.useDatabase(config.database);
|
||||
long end = System.currentTimeMillis();
|
||||
|
@ -70,11 +72,13 @@ public class TaosDemoApplication {
|
|||
if (config.database != null && !config.database.isEmpty())
|
||||
superTableMeta.setDatabase(config.database);
|
||||
} else if (config.numOfFields == 0) {
|
||||
String sql = "create table " + config.database + "." + config.superTable + " (ts timestamp, temperature float, humidity int) tags(location nchar(64), groupId int)";
|
||||
String sql = "create table " + config.database + "." + config.superTable
|
||||
+ " (ts timestamp, temperature float, humidity int) tags(location nchar(64), groupId int)";
|
||||
superTableMeta = SuperTableMetaGenerator.generate(sql);
|
||||
} else {
|
||||
// create super table with specified field size and tag size
|
||||
superTableMeta = SuperTableMetaGenerator.generate(config.database, config.superTable, config.numOfFields, config.prefixOfFields, config.numOfTags, config.prefixOfTags);
|
||||
superTableMeta = SuperTableMetaGenerator.generate(config.database, config.superTable, config.numOfFields,
|
||||
config.prefixOfFields, config.numOfTags, config.prefixOfTags);
|
||||
}
|
||||
/**********************************************************************************/
|
||||
// 建表
|
||||
|
@ -84,7 +88,8 @@ public class TaosDemoApplication {
|
|||
superTableService.create(superTableMeta);
|
||||
if (!config.autoCreateTable) {
|
||||
// 批量建子表
|
||||
subTableService.createSubTable(superTableMeta, config.numOfTables, config.prefixOfTable, config.numOfThreadsForCreate);
|
||||
subTableService.createSubTable(superTableMeta, config.numOfTables, config.prefixOfTable,
|
||||
config.numOfThreadsForCreate);
|
||||
}
|
||||
}
|
||||
end = System.currentTimeMillis();
|
||||
|
@ -93,7 +98,7 @@ public class TaosDemoApplication {
|
|||
// 插入
|
||||
long tableSize = config.numOfTables;
|
||||
int threadSize = config.numOfThreadsForInsert;
|
||||
long startTime = getProperStartTime(config.startTime, config.keep);
|
||||
long startTime = getProperStartTime(config.startTime, config.days);
|
||||
|
||||
if (tableSize < threadSize)
|
||||
threadSize = (int) tableSize;
|
||||
|
@ -101,13 +106,13 @@ public class TaosDemoApplication {
|
|||
|
||||
start = System.currentTimeMillis();
|
||||
// multi threads to insert
|
||||
int affectedRows = subTableService.insertMultiThreads(superTableMeta, threadSize, tableSize, startTime, gap, config);
|
||||
int affectedRows = subTableService.insertMultiThreads(superTableMeta, threadSize, tableSize, startTime, gap,
|
||||
config);
|
||||
end = System.currentTimeMillis();
|
||||
logger.info("insert " + affectedRows + " rows, time cost: " + (end - start) + " ms");
|
||||
/**********************************************************************************/
|
||||
// 查询
|
||||
|
||||
|
||||
/**********************************************************************************/
|
||||
// 删除表
|
||||
if (config.dropTable) {
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package com.taosdata.taosdemo.service;
|
||||
|
||||
import com.taosdata.jdbc.utils.SqlSyntaxValidator;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
|
@ -23,10 +21,6 @@ public class QueryService {
|
|||
Boolean[] ret = new Boolean[sqls.length];
|
||||
for (int i = 0; i < sqls.length; i++) {
|
||||
ret[i] = true;
|
||||
if (!SqlSyntaxValidator.isValidForExecuteQuery(sqls[i])) {
|
||||
ret[i] = false;
|
||||
continue;
|
||||
}
|
||||
try (Connection conn = dataSource.getConnection(); Statement stmt = conn.createStatement()) {
|
||||
stmt.executeQuery(sqls[i]);
|
||||
} catch (SQLException e) {
|
||||
|
|
|
@ -15,9 +15,12 @@ public class SqlSpeller {
|
|||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("create database if not exists ").append(map.get("database")).append(" ");
|
||||
if (map.containsKey("keep"))
|
||||
sb.append("keep ").append(map.get("keep")).append(" ");
|
||||
if (map.containsKey("days"))
|
||||
sb.append("days ").append(map.get("days")).append(" ");
|
||||
sb.append("keep ");
|
||||
if (map.containsKey("days")) {
|
||||
sb.append(map.get("days")).append("d ");
|
||||
} else {
|
||||
sb.append(" ");
|
||||
}
|
||||
if (map.containsKey("replica"))
|
||||
sb.append("replica ").append(map.get("replica")).append(" ");
|
||||
if (map.containsKey("cache"))
|
||||
|
@ -29,7 +32,7 @@ public class SqlSpeller {
|
|||
if (map.containsKey("maxrows"))
|
||||
sb.append("maxrows ").append(map.get("maxrows")).append(" ");
|
||||
if (map.containsKey("precision"))
|
||||
sb.append("precision ").append(map.get("precision")).append(" ");
|
||||
sb.append("precision '").append(map.get("precision")).append("' ");
|
||||
if (map.containsKey("comp"))
|
||||
sb.append("comp ").append(map.get("comp")).append(" ");
|
||||
if (map.containsKey("walLevel"))
|
||||
|
@ -46,11 +49,13 @@ public class SqlSpeller {
|
|||
// create table if not exists xx.xx using xx.xx tags(x,x,x)
|
||||
public static String createTableUsingSuperTable(SubTableMeta subTableMeta) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("create table if not exists ").append(subTableMeta.getDatabase()).append(".").append(subTableMeta.getName()).append(" ");
|
||||
sb.append("using ").append(subTableMeta.getDatabase()).append(".").append(subTableMeta.getSupertable()).append(" ");
|
||||
// String tagStr = subTableMeta.getTags().stream().filter(Objects::nonNull)
|
||||
// .map(tagValue -> tagValue.getName() + " '" + tagValue.getValue() + "' ")
|
||||
// .collect(Collectors.joining(",", "(", ")"));
|
||||
sb.append("create table if not exists ").append(subTableMeta.getDatabase()).append(".")
|
||||
.append(subTableMeta.getName()).append(" ");
|
||||
sb.append("using ").append(subTableMeta.getDatabase()).append(".").append(subTableMeta.getSupertable())
|
||||
.append(" ");
|
||||
// String tagStr = subTableMeta.getTags().stream().filter(Objects::nonNull)
|
||||
// .map(tagValue -> tagValue.getName() + " '" + tagValue.getValue() + "' ")
|
||||
// .collect(Collectors.joining(",", "(", ")"));
|
||||
sb.append("tags ").append(tagValues(subTableMeta.getTags()));
|
||||
return sb.toString();
|
||||
}
|
||||
|
@ -63,7 +68,7 @@ public class SqlSpeller {
|
|||
return sb.toString();
|
||||
}
|
||||
|
||||
//f1, f2, f3
|
||||
// f1, f2, f3
|
||||
private static String fieldValues(List<FieldValue> fields) {
|
||||
return IntStream.range(0, fields.size()).mapToObj(i -> {
|
||||
if (i == 0) {
|
||||
|
@ -73,13 +78,13 @@ public class SqlSpeller {
|
|||
}
|
||||
}).collect(Collectors.joining(",", "(", ")"));
|
||||
|
||||
// return fields.stream()
|
||||
// .filter(Objects::nonNull)
|
||||
// .map(fieldValue -> "'" + fieldValue.getValue() + "'")
|
||||
// .collect(Collectors.joining(",", "(", ")"));
|
||||
// return fields.stream()
|
||||
// .filter(Objects::nonNull)
|
||||
// .map(fieldValue -> "'" + fieldValue.getValue() + "'")
|
||||
// .collect(Collectors.joining(",", "(", ")"));
|
||||
}
|
||||
|
||||
//(f1, f2, f3),(f1, f2, f3)
|
||||
// (f1, f2, f3),(f1, f2, f3)
|
||||
private static String rowValues(List<RowValue> rowValues) {
|
||||
return rowValues.stream().filter(Objects::nonNull)
|
||||
.map(rowValue -> fieldValues(rowValue.getFields()))
|
||||
|
@ -89,8 +94,10 @@ public class SqlSpeller {
|
|||
// insert into xx.xxx using xx.xx tags(x,x,x) values(x,x,x),(x,x,x)...
|
||||
public static String insertOneTableMultiValuesUsingSuperTable(SubTableValue subTableValue) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("insert into ").append(subTableValue.getDatabase()).append(".").append(subTableValue.getName()).append(" ");
|
||||
sb.append("using ").append(subTableValue.getDatabase()).append(".").append(subTableValue.getSupertable()).append(" ");
|
||||
sb.append("insert into ").append(subTableValue.getDatabase()).append(".").append(subTableValue.getName())
|
||||
.append(" ");
|
||||
sb.append("using ").append(subTableValue.getDatabase()).append(".").append(subTableValue.getSupertable())
|
||||
.append(" ");
|
||||
sb.append("tags ").append(tagValues(subTableValue.getTags()) + " ");
|
||||
sb.append("values ").append(rowValues(subTableValue.getValues()));
|
||||
return sb.toString();
|
||||
|
@ -126,7 +133,8 @@ public class SqlSpeller {
|
|||
// create table if not exists xx.xx (f1 xx,f2 xx...) tags(t1 xx, t2 xx...)
|
||||
public static String createSuperTable(SuperTableMeta tableMetadata) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("create table if not exists ").append(tableMetadata.getDatabase()).append(".").append(tableMetadata.getName());
|
||||
sb.append("create table if not exists ").append(tableMetadata.getDatabase()).append(".")
|
||||
.append(tableMetadata.getName());
|
||||
String fields = tableMetadata.getFields().stream()
|
||||
.filter(Objects::nonNull).map(field -> field.getName() + " " + field.getType() + " ")
|
||||
.collect(Collectors.joining(",", "(", ")"));
|
||||
|
@ -139,10 +147,10 @@ public class SqlSpeller {
|
|||
return sb.toString();
|
||||
}
|
||||
|
||||
|
||||
public static String createTable(TableMeta tableMeta) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("create table if not exists ").append(tableMeta.getDatabase()).append(".").append(tableMeta.getName()).append(" ");
|
||||
sb.append("create table if not exists ").append(tableMeta.getDatabase()).append(".").append(tableMeta.getName())
|
||||
.append(" ");
|
||||
String fields = tableMeta.getFields().stream()
|
||||
.filter(Objects::nonNull).map(field -> field.getName() + " " + field.getType() + " ")
|
||||
.collect(Collectors.joining(",", "(", ")"));
|
||||
|
@ -179,16 +187,17 @@ public class SqlSpeller {
|
|||
public static String insertMultiTableMultiValuesWithColumns(List<TableValue> tables) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("insert into ").append(tables.stream().filter(Objects::nonNull)
|
||||
.map(table -> table.getDatabase() + "." + table.getName() + " " + columnNames(table.getColumns()) + " values " + rowValues(table.getValues()))
|
||||
.map(table -> table.getDatabase() + "." + table.getName() + " " + columnNames(table.getColumns())
|
||||
+ " values " + rowValues(table.getValues()))
|
||||
.collect(Collectors.joining(" ")));
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
public static String insertMultiTableMultiValues(List<TableValue> tables) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("insert into ").append(tables.stream().filter(Objects::nonNull).map(table ->
|
||||
table.getDatabase() + "." + table.getName() + " values " + rowValues(table.getValues())
|
||||
).collect(Collectors.joining(" ")));
|
||||
sb.append("insert into ").append(tables.stream().filter(Objects::nonNull)
|
||||
.map(table -> table.getDatabase() + "." + table.getName() + " values " + rowValues(table.getValues()))
|
||||
.collect(Collectors.joining(" ")));
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
jdbc.driver=com.taosdata.jdbc.rs.RestfulDriver
|
||||
#jdbc.driver=com.taosdata.jdbc.TSDBDriver
|
||||
# jdbc.driver=com.taosdata.jdbc.rs.RestfulDriver
|
||||
jdbc.driver=com.taosdata.jdbc.TSDBDriver
|
||||
hikari.maximum-pool-size=20
|
||||
hikari.minimum-idle=20
|
||||
hikari.max-lifetime=0
|
|
@ -1,31 +0,0 @@
|
|||
package com.taosdata.taosdemo.service;
|
||||
|
||||
import com.taosdata.taosdemo.domain.TableMeta;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TableServiceTest {
|
||||
private TableService tableService;
|
||||
|
||||
private List<TableMeta> tables;
|
||||
|
||||
@Before
|
||||
public void before() {
|
||||
tables = new ArrayList<>();
|
||||
for (int i = 0; i < 1; i++) {
|
||||
TableMeta tableMeta = new TableMeta();
|
||||
tableMeta.setDatabase("test");
|
||||
tableMeta.setName("weather" + (i + 1));
|
||||
tables.add(tableMeta);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testCreate() {
|
||||
tableService.create(tables);
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue