[TD-2297]<test>: check local taos-jdbcdriver-2.0.x.jar
This commit is contained in:
parent
7138b29f96
commit
f1896f54e9
|
@ -23,7 +23,7 @@
|
||||||
<configuration>
|
<configuration>
|
||||||
<archive>
|
<archive>
|
||||||
<manifest>
|
<manifest>
|
||||||
<mainClass>com.taosdata.example.JdbcChecker</mainClass>
|
<mainClass>com.taosdata.example.JdbcDemo</mainClass>
|
||||||
</manifest>
|
</manifest>
|
||||||
</archive>
|
</archive>
|
||||||
<descriptorRefs>
|
<descriptorRefs>
|
||||||
|
@ -56,18 +56,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.taosdata.jdbc</groupId>
|
<groupId>com.taosdata.jdbc</groupId>
|
||||||
<artifactId>taos-jdbcdriver</artifactId>
|
<artifactId>taos-jdbcdriver</artifactId>
|
||||||
<version>2.0.12</version>
|
<version>2.0.15</version>
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>log4j</groupId>
|
|
||||||
<artifactId>log4j</artifactId>
|
|
||||||
<version>1.2.17</version>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
|
||||||
<groupId>junit</groupId>
|
|
||||||
<artifactId>junit</artifactId>
|
|
||||||
<version>4.13.1</version>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
|
|
@ -5,16 +5,37 @@ import com.taosdata.jdbc.TSDBDriver;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
public class JdbcChecker {
|
public class JdbcDemo {
|
||||||
private static String host;
|
private static String host;
|
||||||
private static String dbName = "test";
|
private static final String dbName = "test";
|
||||||
private static String tbName = "weather";
|
private static final String tbName = "weather";
|
||||||
private Connection connection;
|
private Connection connection;
|
||||||
|
|
||||||
/**
|
public static void main(String[] args) {
|
||||||
* get connection
|
for (int i = 0; i < args.length; i++) {
|
||||||
**/
|
if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1)
|
||||||
|
host = args[++i];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (host == null) {
|
||||||
|
System.out.println("Usage: java -jar JdbcDemo.jar -host <hostname>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
JdbcDemo demo = new JdbcDemo();
|
||||||
|
demo.init();
|
||||||
|
demo.createDatabase();
|
||||||
|
demo.useDatabase();
|
||||||
|
demo.dropTable();
|
||||||
|
demo.createTable();
|
||||||
|
demo.insert();
|
||||||
|
demo.select();
|
||||||
|
demo.dropTable();
|
||||||
|
demo.close();
|
||||||
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
|
// get connection
|
||||||
try {
|
try {
|
||||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
||||||
Properties properties = new Properties();
|
Properties properties = new Properties();
|
||||||
|
@ -31,26 +52,17 @@ public class JdbcChecker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* create database
|
|
||||||
*/
|
|
||||||
private void createDatabase() {
|
private void createDatabase() {
|
||||||
String sql = "create database if not exists " + dbName;
|
String sql = "create database if not exists " + dbName;
|
||||||
exuete(sql);
|
exuete(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* use database
|
|
||||||
*/
|
|
||||||
private void useDatabase() {
|
private void useDatabase() {
|
||||||
String sql = "use " + dbName;
|
String sql = "use " + dbName;
|
||||||
exuete(sql);
|
exuete(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
private void select() {
|
||||||
* select
|
|
||||||
*/
|
|
||||||
private void checkSelect() {
|
|
||||||
final String sql = "select * from test.weather";
|
final String sql = "select * from test.weather";
|
||||||
executeQuery(sql);
|
executeQuery(sql);
|
||||||
}
|
}
|
||||||
|
@ -79,40 +91,21 @@ public class JdbcChecker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String formatString(String str) {
|
private void insert() {
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
int blankCnt = (26 - str.length()) / 2;
|
|
||||||
for (int j = 0; j < blankCnt; j++)
|
|
||||||
sb.append(" ");
|
|
||||||
sb.append(str);
|
|
||||||
for (int j = 0; j < blankCnt; j++)
|
|
||||||
sb.append(" ");
|
|
||||||
sb.append("|");
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* insert
|
|
||||||
*/
|
|
||||||
private void checkInsert() {
|
|
||||||
final String sql = "insert into test.weather (ts, temperature, humidity) values(now, 20.5, 34)";
|
final String sql = "insert into test.weather (ts, temperature, humidity) values(now, 20.5, 34)";
|
||||||
exuete(sql);
|
exuete(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* create table
|
|
||||||
*/
|
|
||||||
private void createTable() {
|
private void createTable() {
|
||||||
final String sql = "create table if not exists " + dbName + "." + tbName + " (ts timestamp, temperature float, humidity int)";
|
final String sql = "create table if not exists " + dbName + "." + tbName + " (ts timestamp, temperature float, humidity int)";
|
||||||
exuete(sql);
|
exuete(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void printSql(String sql, boolean succeed, long cost) {
|
private void printSql(String sql, boolean succeed, long cost) {
|
||||||
System.out.println("[ " + (succeed ? "OK" : "ERROR!") + " ] time cost: " + cost + " ms, execute statement ====> " + sql);
|
System.out.println("[ " + (succeed ? "OK" : "ERROR!") + " ] time cost: " + cost + " ms, execute statement ====> " + sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final void exuete(String sql) {
|
private void exuete(String sql) {
|
||||||
try (Statement statement = connection.createStatement()) {
|
try (Statement statement = connection.createStatement()) {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
boolean execute = statement.execute(sql);
|
boolean execute = statement.execute(sql);
|
||||||
|
@ -135,39 +128,10 @@ public class JdbcChecker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkDropTable() {
|
private void dropTable() {
|
||||||
final String sql = "drop table if exists " + dbName + "." + tbName + "";
|
final String sql = "drop table if exists " + dbName + "." + tbName + "";
|
||||||
exuete(sql);
|
exuete(sql);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
for (int i = 0; i < args.length; i++) {
|
|
||||||
if ("-host".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
|
||||||
host = args[++i];
|
|
||||||
}
|
|
||||||
if ("-db".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
|
||||||
dbName = args[++i];
|
|
||||||
}
|
|
||||||
if ("-t".equalsIgnoreCase(args[i]) && i < args.length - 1) {
|
|
||||||
tbName = args[++i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (host == null) {
|
|
||||||
System.out.println("Usage: java -jar JDBCConnectorChecker.jar -host <hostname>");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JdbcChecker checker = new JdbcChecker();
|
|
||||||
checker.init();
|
|
||||||
checker.createDatabase();
|
|
||||||
checker.useDatabase();
|
|
||||||
checker.checkDropTable();
|
|
||||||
checker.createTable();
|
|
||||||
checker.checkInsert();
|
|
||||||
checker.checkSelect();
|
|
||||||
checker.checkDropTable();
|
|
||||||
checker.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -1,357 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo;
|
|
||||||
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.domain.JdbcTaosdemoConfig;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.task.CreateTableTask;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.task.InsertTableDatetimeTask;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.task.InsertTableTask;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.ConnectionFactory;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.SqlSpeller;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.TimeStampUtil;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.sql.*;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class JdbcTaosdemo {
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(JdbcTaosdemo.class);
|
|
||||||
private final JdbcTaosdemoConfig config;
|
|
||||||
private Connection connection;
|
|
||||||
|
|
||||||
public JdbcTaosdemo(JdbcTaosdemoConfig config) {
|
|
||||||
this.config = config;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
// parse config from args
|
|
||||||
JdbcTaosdemoConfig config = new JdbcTaosdemoConfig(args);
|
|
||||||
|
|
||||||
boolean isHelp = Arrays.asList(args).contains("--help");
|
|
||||||
if (isHelp) {
|
|
||||||
JdbcTaosdemoConfig.printHelp();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (config.getHost() == null) {
|
|
||||||
JdbcTaosdemoConfig.printHelp();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
JdbcTaosdemo taosdemo = new JdbcTaosdemo(config);
|
|
||||||
// establish connection
|
|
||||||
taosdemo.init();
|
|
||||||
// drop database
|
|
||||||
taosdemo.dropDatabase();
|
|
||||||
// create database
|
|
||||||
taosdemo.createDatabase();
|
|
||||||
// use db
|
|
||||||
taosdemo.useDatabase();
|
|
||||||
// create super table
|
|
||||||
taosdemo.createSuperTable();
|
|
||||||
// create sub tables
|
|
||||||
taosdemo.createTableMultiThreads();
|
|
||||||
|
|
||||||
boolean infinite = Arrays.asList(args).contains("--infinite");
|
|
||||||
if (infinite) {
|
|
||||||
logger.info("!!! Infinite Insert Mode Started. !!!");
|
|
||||||
taosdemo.insertInfinite();
|
|
||||||
} else {
|
|
||||||
// insert into table
|
|
||||||
taosdemo.insertMultiThreads();
|
|
||||||
// select from sub table
|
|
||||||
taosdemo.selectFromTableLimit();
|
|
||||||
taosdemo.selectCountFromTable();
|
|
||||||
taosdemo.selectAvgMinMaxFromTable();
|
|
||||||
// select last from
|
|
||||||
taosdemo.selectLastFromTable();
|
|
||||||
// select from super table
|
|
||||||
taosdemo.selectFromSuperTableLimit();
|
|
||||||
taosdemo.selectCountFromSuperTable();
|
|
||||||
taosdemo.selectAvgMinMaxFromSuperTable();
|
|
||||||
//select avg ,max from stb where tag
|
|
||||||
taosdemo.selectAvgMinMaxFromSuperTableWhereTag();
|
|
||||||
//select last from stb where location = ''
|
|
||||||
taosdemo.selectLastFromSuperTableWhere();
|
|
||||||
// select group by
|
|
||||||
taosdemo.selectGroupBy();
|
|
||||||
// select like
|
|
||||||
taosdemo.selectLike();
|
|
||||||
// select where ts >= ts<=
|
|
||||||
taosdemo.selectLastOneHour();
|
|
||||||
taosdemo.selectLastOneDay();
|
|
||||||
taosdemo.selectLastOneWeek();
|
|
||||||
taosdemo.selectLastOneMonth();
|
|
||||||
taosdemo.selectLastOneYear();
|
|
||||||
|
|
||||||
// drop super table
|
|
||||||
if (config.isDeleteTable())
|
|
||||||
taosdemo.dropSuperTable();
|
|
||||||
taosdemo.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* establish the connection
|
|
||||||
*/
|
|
||||||
private void init() {
|
|
||||||
try {
|
|
||||||
Class.forName("com.taosdata.jdbc.TSDBDriver");
|
|
||||||
connection = ConnectionFactory.build(config);
|
|
||||||
if (connection != null)
|
|
||||||
logger.info("[ OK ] Connection established.");
|
|
||||||
} catch (ClassNotFoundException | SQLException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
throw new RuntimeException("connection failed: " + config.getHost());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create database
|
|
||||||
*/
|
|
||||||
private void createDatabase() {
|
|
||||||
String sql = SqlSpeller.createDatabaseSQL(config.getDbName(), config.getKeep(), config.getDays());
|
|
||||||
execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* drop database
|
|
||||||
*/
|
|
||||||
private void dropDatabase() {
|
|
||||||
String sql = SqlSpeller.dropDatabaseSQL(config.getDbName());
|
|
||||||
execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* use database
|
|
||||||
*/
|
|
||||||
private void useDatabase() {
|
|
||||||
String sql = SqlSpeller.useDatabaseSQL(config.getDbName());
|
|
||||||
execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create super table
|
|
||||||
*/
|
|
||||||
private void createSuperTable() {
|
|
||||||
String sql = SqlSpeller.createSuperTableSQL(config.getStbName());
|
|
||||||
execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* create table use super table with multi threads
|
|
||||||
*/
|
|
||||||
private void createTableMultiThreads() {
|
|
||||||
try {
|
|
||||||
final int tableSize = config.getNumberOfTable() / config.getNumberOfThreads();
|
|
||||||
List<Thread> threads = new ArrayList<>();
|
|
||||||
for (int i = 0; i < config.getNumberOfThreads(); i++) {
|
|
||||||
Thread thread = new Thread(new CreateTableTask(config, i * tableSize, tableSize), "Thread-" + i);
|
|
||||||
threads.add(thread);
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
for (Thread thread : threads) {
|
|
||||||
thread.join();
|
|
||||||
}
|
|
||||||
logger.info("<<< Multi Threads create table finished.");
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* insert data infinitely
|
|
||||||
*/
|
|
||||||
private void insertInfinite() {
|
|
||||||
try {
|
|
||||||
final long startDatetime = TimeStampUtil.datetimeToLong("2005-01-01 00:00:00.000");
|
|
||||||
final long finishDatetime = TimeStampUtil.datetimeToLong("2030-01-01 00:00:00.000");
|
|
||||||
|
|
||||||
final int tableSize = config.getNumberOfTable() / config.getNumberOfThreads();
|
|
||||||
List<Thread> threads = new ArrayList<>();
|
|
||||||
for (int i = 0; i < config.getNumberOfThreads(); i++) {
|
|
||||||
Thread thread = new Thread(new InsertTableDatetimeTask(config, i * tableSize, tableSize, startDatetime, finishDatetime), "Thread-" + i);
|
|
||||||
threads.add(thread);
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
for (Thread thread : threads) {
|
|
||||||
thread.join();
|
|
||||||
}
|
|
||||||
logger.info("<<< Multi Threads insert table finished.");
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void insertMultiThreads() {
|
|
||||||
try {
|
|
||||||
final int tableSize = config.getNumberOfTable() / config.getNumberOfThreads();
|
|
||||||
final int numberOfRecordsPerTable = config.getNumberOfRecordsPerTable();
|
|
||||||
List<Thread> threads = new ArrayList<>();
|
|
||||||
for (int i = 0; i < config.getNumberOfThreads(); i++) {
|
|
||||||
Thread thread = new Thread(new InsertTableTask(config, i * tableSize, tableSize, numberOfRecordsPerTable), "Thread-" + i);
|
|
||||||
threads.add(thread);
|
|
||||||
thread.start();
|
|
||||||
}
|
|
||||||
for (Thread thread : threads) {
|
|
||||||
thread.join();
|
|
||||||
}
|
|
||||||
logger.info("<<< Multi Threads insert table finished.");
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectFromTableLimit() {
|
|
||||||
String sql = SqlSpeller.selectFromTableLimitSQL(config.getDbName(), config.getTbPrefix(), 1, 10, 0);
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectCountFromTable() {
|
|
||||||
String sql = SqlSpeller.selectCountFromTableSQL(config.getDbName(), config.getTbPrefix(), 1);
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectAvgMinMaxFromTable() {
|
|
||||||
String sql = SqlSpeller.selectAvgMinMaxFromTableSQL("current", config.getDbName(), config.getTbPrefix(), 1);
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastFromTable() {
|
|
||||||
String sql = SqlSpeller.selectLastFromTableSQL(config.getDbName(), config.getTbPrefix(), 1);
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectFromSuperTableLimit() {
|
|
||||||
String sql = SqlSpeller.selectFromSuperTableLimitSQL(config.getDbName(), config.getStbName(), 10, 0);
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectCountFromSuperTable() {
|
|
||||||
String sql = SqlSpeller.selectCountFromSuperTableSQL(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectAvgMinMaxFromSuperTable() {
|
|
||||||
String sql = SqlSpeller.selectAvgMinMaxFromSuperTableSQL("current", config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectAvgMinMaxFromSuperTableWhereTag() {
|
|
||||||
String sql = SqlSpeller.selectAvgMinMaxFromSuperTableWhere("current", config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastFromSuperTableWhere() {
|
|
||||||
String sql = SqlSpeller.selectLastFromSuperTableWhere("current", config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectGroupBy() {
|
|
||||||
String sql = SqlSpeller.selectGroupBy("current", config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLike() {
|
|
||||||
String sql = SqlSpeller.selectLike(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastOneHour() {
|
|
||||||
String sql = SqlSpeller.selectLastOneHour(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastOneDay() {
|
|
||||||
String sql = SqlSpeller.selectLastOneDay(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastOneWeek() {
|
|
||||||
String sql = SqlSpeller.selectLastOneWeek(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastOneMonth() {
|
|
||||||
String sql = SqlSpeller.selectLastOneMonth(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void selectLastOneYear() {
|
|
||||||
String sql = SqlSpeller.selectLastOneYear(config.getDbName(), config.getStbName());
|
|
||||||
executeQuery(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private void close() {
|
|
||||||
try {
|
|
||||||
if (connection != null) {
|
|
||||||
this.connection.close();
|
|
||||||
logger.info("connection closed.");
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* drop super table
|
|
||||||
*/
|
|
||||||
private void dropSuperTable() {
|
|
||||||
String sql = SqlSpeller.dropSuperTableSQL(config.getDbName(), config.getStbName());
|
|
||||||
execute(sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* execute sql, use this method when sql is create, alter, drop..
|
|
||||||
*/
|
|
||||||
private void execute(String sql) {
|
|
||||||
try (Statement statement = connection.createStatement()) {
|
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
boolean execute = statement.execute(sql);
|
|
||||||
long end = System.currentTimeMillis();
|
|
||||||
printSql(sql, execute, (end - start));
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error("ERROR execute SQL ===> " + sql);
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void printSql(String sql, boolean succeed, long cost) {
|
|
||||||
System.out.println("[ " + (succeed ? "OK" : "ERROR!") + " ] time cost: " + cost + " ms, execute statement ====> " + sql);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void executeQuery(String sql) {
|
|
||||||
try (Statement statement = connection.createStatement()) {
|
|
||||||
long start = System.currentTimeMillis();
|
|
||||||
ResultSet resultSet = statement.executeQuery(sql);
|
|
||||||
long end = System.currentTimeMillis();
|
|
||||||
printSql(sql, true, (end - start));
|
|
||||||
printResult(resultSet);
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error("ERROR execute SQL ===> " + sql);
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void printResult(ResultSet resultSet) throws SQLException {
|
|
||||||
ResultSetMetaData metaData = resultSet.getMetaData();
|
|
||||||
while (resultSet.next()) {
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
for (int i = 1; i <= metaData.getColumnCount(); i++) {
|
|
||||||
String columnLabel = metaData.getColumnLabel(i);
|
|
||||||
String value = resultSet.getString(i);
|
|
||||||
sb.append(columnLabel + ": " + value + "\t");
|
|
||||||
}
|
|
||||||
System.out.println(sb.toString());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,153 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.domain;
|
|
||||||
|
|
||||||
public final class JdbcTaosdemoConfig {
|
|
||||||
|
|
||||||
//The host to connect to TDengine. Must insert one
|
|
||||||
private String host;
|
|
||||||
//The TCP/IP port number to use for the connection. Default is 6030.
|
|
||||||
private int port = 6030;
|
|
||||||
//The TDengine user name to use when connecting to the server. Default is 'root'
|
|
||||||
private String user = "root";
|
|
||||||
//The password to use when connecting to the server. Default is 'taosdata'
|
|
||||||
private String password = "taosdata";
|
|
||||||
|
|
||||||
//Destination database. Default is 'test'
|
|
||||||
private String dbName = "test";
|
|
||||||
//keep
|
|
||||||
private int keep = 36500;
|
|
||||||
//days
|
|
||||||
private int days = 120;
|
|
||||||
|
|
||||||
//Super table Name. Default is 'meters'
|
|
||||||
private String stbName = "meters";
|
|
||||||
//Table name prefix. Default is 'd'
|
|
||||||
private String tbPrefix = "d";
|
|
||||||
//The number of tables. Default is 10.
|
|
||||||
private int numberOfTable = 10;
|
|
||||||
//The number of records per table. Default is 2
|
|
||||||
private int numberOfRecordsPerTable = 2;
|
|
||||||
//The number of records per request. Default is 100
|
|
||||||
private int numberOfRecordsPerRequest = 100;
|
|
||||||
|
|
||||||
//The number of threads. Default is 1.
|
|
||||||
private int numberOfThreads = 1;
|
|
||||||
//Delete data. Default is false
|
|
||||||
private boolean deleteTable = false;
|
|
||||||
|
|
||||||
public static void printHelp() {
|
|
||||||
System.out.println("Usage: java -jar JdbcTaosDemo.jar [OPTION...]");
|
|
||||||
System.out.println("-h host The host to connect to TDengine. you must input one");
|
|
||||||
System.out.println("-p port The TCP/IP port number to use for the connection. Default is 6030");
|
|
||||||
System.out.println("-u user The TDengine user name to use when connecting to the server. Default is 'root'");
|
|
||||||
System.out.println("-P password The password to use when connecting to the server.Default is 'taosdata'");
|
|
||||||
System.out.println("-d database Destination database. Default is 'test'");
|
|
||||||
System.out.println("-m tablePrefix Table prefix name. Default is 'd'");
|
|
||||||
System.out.println("-t num_of_tables The number of tables. Default is 10");
|
|
||||||
System.out.println("-n num_of_records_per_table The number of records per table. Default is 2");
|
|
||||||
System.out.println("-r num_of_records_per_req The number of records per request. Default is 100");
|
|
||||||
System.out.println("-T num_of_threads The number of threads. Default is 1");
|
|
||||||
System.out.println("-D delete table Delete data methods. Default is false");
|
|
||||||
System.out.println("--help Give this help list");
|
|
||||||
// System.out.println("--infinite infinite insert mode");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* parse args from command line
|
|
||||||
*
|
|
||||||
* @param args command line args
|
|
||||||
* @return JdbcTaosdemoConfig
|
|
||||||
*/
|
|
||||||
public JdbcTaosdemoConfig(String[] args) {
|
|
||||||
for (int i = 0; i < args.length; i++) {
|
|
||||||
if ("-h".equals(args[i]) && i < args.length - 1) {
|
|
||||||
host = args[++i];
|
|
||||||
}
|
|
||||||
if ("-p".equals(args[i]) && i < args.length - 1) {
|
|
||||||
port = Integer.parseInt(args[++i]);
|
|
||||||
}
|
|
||||||
if ("-u".equals(args[i]) && i < args.length - 1) {
|
|
||||||
user = args[++i];
|
|
||||||
}
|
|
||||||
if ("-P".equals(args[i]) && i < args.length - 1) {
|
|
||||||
password = args[++i];
|
|
||||||
}
|
|
||||||
if ("-d".equals(args[i]) && i < args.length - 1) {
|
|
||||||
dbName = args[++i];
|
|
||||||
}
|
|
||||||
if ("-m".equals(args[i]) && i < args.length - 1) {
|
|
||||||
tbPrefix = args[++i];
|
|
||||||
}
|
|
||||||
if ("-t".equals(args[i]) && i < args.length - 1) {
|
|
||||||
numberOfTable = Integer.parseInt(args[++i]);
|
|
||||||
}
|
|
||||||
if ("-n".equals(args[i]) && i < args.length - 1) {
|
|
||||||
numberOfRecordsPerTable = Integer.parseInt(args[++i]);
|
|
||||||
}
|
|
||||||
if ("-r".equals(args[i]) && i < args.length - 1) {
|
|
||||||
numberOfRecordsPerRequest = Integer.parseInt(args[++i]);
|
|
||||||
}
|
|
||||||
if ("-T".equals(args[i]) && i < args.length - 1) {
|
|
||||||
numberOfThreads = Integer.parseInt(args[++i]);
|
|
||||||
}
|
|
||||||
if ("-D".equals(args[i]) && i < args.length - 1) {
|
|
||||||
deleteTable = Boolean.parseBoolean(args[++i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getHost() {
|
|
||||||
return host;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getPort() {
|
|
||||||
return port;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getUser() {
|
|
||||||
return user;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPassword() {
|
|
||||||
return password;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDbName() {
|
|
||||||
return dbName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getKeep() {
|
|
||||||
return keep;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getDays() {
|
|
||||||
return days;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getStbName() {
|
|
||||||
return stbName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTbPrefix() {
|
|
||||||
return tbPrefix;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumberOfTable() {
|
|
||||||
return numberOfTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumberOfRecordsPerTable() {
|
|
||||||
return numberOfRecordsPerTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumberOfThreads() {
|
|
||||||
return numberOfThreads;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isDeleteTable() {
|
|
||||||
return deleteTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getNumberOfRecordsPerRequest() {
|
|
||||||
return numberOfRecordsPerRequest;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.task;
|
|
||||||
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.domain.JdbcTaosdemoConfig;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.ConnectionFactory;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.SqlSpeller;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
|
|
||||||
public class CreateTableTask implements Runnable {
|
|
||||||
|
|
||||||
private static Logger logger = Logger.getLogger(CreateTableTask.class);
|
|
||||||
private final JdbcTaosdemoConfig config;
|
|
||||||
private final int startIndex;
|
|
||||||
private final int tableNumber;
|
|
||||||
|
|
||||||
public CreateTableTask(JdbcTaosdemoConfig config, int startIndex, int tableNumber) {
|
|
||||||
this.config = config;
|
|
||||||
this.startIndex = startIndex;
|
|
||||||
this.tableNumber = tableNumber;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
Connection connection = ConnectionFactory.build(config);
|
|
||||||
for (int i = startIndex; i < startIndex + tableNumber; i++) {
|
|
||||||
Statement statement = connection.createStatement();
|
|
||||||
String sql = SqlSpeller.createTableSQL(i + 1, config.getDbName(), config.getStbName());
|
|
||||||
statement.execute(sql);
|
|
||||||
statement.close();
|
|
||||||
logger.info(">>> " + sql);
|
|
||||||
}
|
|
||||||
connection.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.task;
|
|
||||||
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.domain.JdbcTaosdemoConfig;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.ConnectionFactory;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.SqlSpeller;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
|
|
||||||
public class InsertTableDatetimeTask implements Runnable {
|
|
||||||
private static Logger logger = Logger.getLogger(InsertTableDatetimeTask.class);
|
|
||||||
|
|
||||||
private final JdbcTaosdemoConfig config;
|
|
||||||
private final int startTableIndex;
|
|
||||||
private final int tableNumber;
|
|
||||||
private final long startDatetime;
|
|
||||||
private final long finishedDatetime;
|
|
||||||
|
|
||||||
public InsertTableDatetimeTask(JdbcTaosdemoConfig config, int startTableIndex, int tableNumber, long startDatetime, long finishedDatetime) {
|
|
||||||
this.config = config;
|
|
||||||
this.startTableIndex = startTableIndex;
|
|
||||||
this.tableNumber = tableNumber;
|
|
||||||
this.startDatetime = startDatetime;
|
|
||||||
this.finishedDatetime = finishedDatetime;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
Connection connection = ConnectionFactory.build(config);
|
|
||||||
int valuesCount = config.getNumberOfRecordsPerRequest();
|
|
||||||
for (long ts = startDatetime; ts < finishedDatetime; ts += valuesCount) {
|
|
||||||
for (int i = startTableIndex; i < startTableIndex + tableNumber; i++) {
|
|
||||||
String sql = SqlSpeller.insertBatchSizeRowsSQL(config.getDbName(), config.getTbPrefix(), i + 1, ts, valuesCount);
|
|
||||||
Statement statement = connection.createStatement();
|
|
||||||
statement.execute(sql);
|
|
||||||
statement.close();
|
|
||||||
logger.info(Thread.currentThread().getName() + ">>> " + sql);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
connection.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,57 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.task;
|
|
||||||
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.domain.JdbcTaosdemoConfig;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.ConnectionFactory;
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.utils.SqlSpeller;
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
|
|
||||||
public class InsertTableTask implements Runnable {
|
|
||||||
private static final Logger logger = Logger.getLogger(InsertTableTask.class);
|
|
||||||
|
|
||||||
private final JdbcTaosdemoConfig config;
|
|
||||||
private final int startTbIndex;
|
|
||||||
private final int tableNumber;
|
|
||||||
private final int recordsNumberPerTable;
|
|
||||||
|
|
||||||
public InsertTableTask(JdbcTaosdemoConfig config, int startTbIndex, int tableNumber, int recordsNumberPerTable) {
|
|
||||||
this.config = config;
|
|
||||||
this.startTbIndex = startTbIndex;
|
|
||||||
this.tableNumber = tableNumber;
|
|
||||||
this.recordsNumberPerTable = recordsNumberPerTable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
try {
|
|
||||||
Connection connection = ConnectionFactory.build(config);
|
|
||||||
int keep = config.getKeep();
|
|
||||||
Instant end = Instant.now();
|
|
||||||
Instant start = end.minus(Duration.ofDays(keep - 1));
|
|
||||||
long timeGap = ChronoUnit.MILLIS.between(start, end) / (recordsNumberPerTable - 1);
|
|
||||||
|
|
||||||
// iterate insert
|
|
||||||
for (int j = 0; j < recordsNumberPerTable; j++) {
|
|
||||||
long ts = start.toEpochMilli() + (j * timeGap);
|
|
||||||
// insert data into echo table
|
|
||||||
for (int i = startTbIndex; i < startTbIndex + tableNumber; i++) {
|
|
||||||
String sql = SqlSpeller.insertBatchSizeRowsSQL(config.getDbName(), config.getTbPrefix(), i + 1, ts, config.getNumberOfRecordsPerRequest());
|
|
||||||
logger.info(Thread.currentThread().getName() + ">>> " + sql);
|
|
||||||
Statement statement = connection.createStatement();
|
|
||||||
statement.execute(sql);
|
|
||||||
statement.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
connection.close();
|
|
||||||
} catch (SQLException e) {
|
|
||||||
logger.error(e.getMessage());
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,32 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.utils;
|
|
||||||
|
|
||||||
import com.taosdata.example.jdbcTaosdemo.domain.JdbcTaosdemoConfig;
|
|
||||||
import com.taosdata.jdbc.TSDBDriver;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
public class ConnectionFactory {
|
|
||||||
|
|
||||||
public static Connection build(JdbcTaosdemoConfig config) throws SQLException {
|
|
||||||
return build(config.getHost(), config.getPort(), config.getDbName(), config.getUser(), config.getPassword());
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Connection build(String host, int port, String dbName) throws SQLException {
|
|
||||||
return build(host, port, dbName, "root", "taosdata");
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Connection build(String host, int port, String dbName, String user, String password) throws SQLException {
|
|
||||||
Properties properties = new Properties();
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_USER, user);
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_PASSWORD, password);
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_CHARSET, "UTF-8");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_LOCALE, "en_US.UTF-8");
|
|
||||||
properties.setProperty(TSDBDriver.PROPERTY_KEY_TIME_ZONE, "UTC-8");
|
|
||||||
return DriverManager.getConnection("jdbc:TAOS://" + host + ":" + port + "/" + dbName + "", properties);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,126 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.utils;
|
|
||||||
|
|
||||||
import java.util.Random;
|
|
||||||
|
|
||||||
public class SqlSpeller {
|
|
||||||
private static final Random random = new Random(System.currentTimeMillis());
|
|
||||||
private static final String[] locations = {
|
|
||||||
"Beijing", "Shanghai", "Guangzhou", "Shenzhen",
|
|
||||||
"HangZhou", "Tianjin", "Wuhan", "Changsha", "Nanjing", "Xian"
|
|
||||||
};
|
|
||||||
|
|
||||||
public static String createDatabaseSQL(String dbName, int keep, int days) {
|
|
||||||
return "create database if not exists " + dbName + " keep " + keep + " days " + days;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String dropDatabaseSQL(String dbName) {
|
|
||||||
return "drop database if exists " + dbName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String useDatabaseSQL(String dbName) {
|
|
||||||
return "use " + dbName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String createSuperTableSQL(String superTableName) {
|
|
||||||
return "create table if not exists " + superTableName + "(ts timestamp, current float, voltage int, phase float) tags(location binary(64), groupId int)";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String dropSuperTableSQL(String dbName, String superTableName) {
|
|
||||||
return "drop table if exists " + dbName + "." + superTableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String createTableSQL(int tableIndex, String dbName, String superTableName) {
|
|
||||||
String location = locations[random.nextInt(locations.length)];
|
|
||||||
return "create table d" + tableIndex + " using " + dbName + "." + superTableName + " tags('" + location + "'," + tableIndex + ")";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String insertOneRowSQL(String dbName, String tbPrefix, int tableIndex, long ts) {
|
|
||||||
float current = 10 + random.nextFloat();
|
|
||||||
int voltage = 200 + random.nextInt(20);
|
|
||||||
float phase = random.nextFloat();
|
|
||||||
String sql = "insert into " + dbName + "." + tbPrefix + "" + tableIndex + " " + "values(" + ts + ", " + current + ", " + voltage + ", " + phase + ")";
|
|
||||||
return sql;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String insertBatchSizeRowsSQL(String dbName, String tbPrefix, int tbIndex, long ts, int valuesCount) {
|
|
||||||
float current = 10 + random.nextFloat();
|
|
||||||
int voltage = 200 + random.nextInt(20);
|
|
||||||
float phase = random.nextFloat();
|
|
||||||
StringBuilder sb = new StringBuilder();
|
|
||||||
sb.append("insert into " + dbName + "." + tbPrefix + "" + tbIndex + " " + "values");
|
|
||||||
for (int i = 0; i < valuesCount; i++) {
|
|
||||||
sb.append("(" + (ts + i) + ", " + current + ", " + voltage + ", " + phase + ") ");
|
|
||||||
}
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectFromTableLimitSQL(String dbName, String tbPrefix, int tbIndex, int limit, int offset) {
|
|
||||||
return "select * from " + dbName + "." + tbPrefix + "" + tbIndex + " limit " + limit + " offset " + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectCountFromTableSQL(String dbName, String tbPrefix, int tbIndex) {
|
|
||||||
return "select count(*) from " + dbName + "." + tbPrefix + "" + tbIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectAvgMinMaxFromTableSQL(String field, String dbName, String tbPrefix, int tbIndex) {
|
|
||||||
return "select avg(" + field + "),min(" + field + "),max(" + field + ") from " + dbName + "." + tbPrefix + "" + tbIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectFromSuperTableLimitSQL(String dbName, String stbName, int limit, int offset) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " limit " + limit + " offset " + offset;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectCountFromSuperTableSQL(String dbName, String stableName) {
|
|
||||||
return "select count(*) from " + dbName + "." + stableName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectAvgMinMaxFromSuperTableSQL(String field, String dbName, String stbName) {
|
|
||||||
return "select avg(" + field + "),min(" + field + "),max(" + field + ") from " + dbName + "." + stbName + "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastFromTableSQL(String dbName, String tbPrefix, int tbIndex) {
|
|
||||||
return "select last(*) from " + dbName + "." + tbPrefix + "" + tbIndex;
|
|
||||||
}
|
|
||||||
|
|
||||||
//select avg ,max from stb where tag
|
|
||||||
public static String selectAvgMinMaxFromSuperTableWhere(String field, String dbName, String stbName) {
|
|
||||||
return "select avg(" + field + "),min(" + field + "),max(" + field + ") from " + dbName + "." + stbName + " where location = '" + locations[random.nextInt(locations.length)] + "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
//select last from stb where
|
|
||||||
public static String selectLastFromSuperTableWhere(String field, String dbName, String stbName) {
|
|
||||||
return "select last(" + field + ") from " + dbName + "." + stbName + " where location = '" + locations[random.nextInt(locations.length)] + "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectGroupBy(String field, String dbName, String stbName) {
|
|
||||||
return "select avg(" + field + ") from " + dbName + "." + stbName + " group by location";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLike(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where location like 'S%'";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastOneHour(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where ts >= now - 1h";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastOneDay(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where ts >= now - 1d";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastOneWeek(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where ts >= now - 1w";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastOneMonth(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where ts >= now - 1n";
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String selectLastOneYear(String dbName, String stbName) {
|
|
||||||
return "select * from " + dbName + "." + stbName + " where ts >= now - 1y";
|
|
||||||
}
|
|
||||||
|
|
||||||
// select group by
|
|
||||||
// select like
|
|
||||||
// select ts >= ts<=
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.utils;
|
|
||||||
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
public class TimeStampUtil {
|
|
||||||
private static final String datetimeFormat = "yyyy-MM-dd HH:mm:ss.SSS";
|
|
||||||
|
|
||||||
public static long datetimeToLong(String dateTime) {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat(datetimeFormat);
|
|
||||||
try {
|
|
||||||
return sdf.parse(dateTime).getTime();
|
|
||||||
} catch (ParseException e) {
|
|
||||||
throw new RuntimeException(e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String longToDatetime(long time) {
|
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat(datetimeFormat);
|
|
||||||
return sdf.format(new Date(time));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) throws ParseException {
|
|
||||||
|
|
||||||
// Instant now = Instant.now();
|
|
||||||
// System.out.println(now);
|
|
||||||
// Instant years20Ago = now.minus(Duration.ofDays(365));
|
|
||||||
// System.out.println(years20Ago);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
### 设置###
|
|
||||||
log4j.rootLogger=debug,stdout,DebugLog,ErrorLog
|
|
||||||
### 输出信息到控制抬 ###
|
|
||||||
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
|
|
||||||
log4j.appender.stdout.Target=System.out
|
|
||||||
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
|
|
||||||
### 输出DEBUG 级别以上的日志到=logs/error.log ###
|
|
||||||
log4j.appender.DebugLog=org.apache.log4j.DailyRollingFileAppender
|
|
||||||
log4j.appender.DebugLog.File=logs/debug.log
|
|
||||||
log4j.appender.DebugLog.Append=true
|
|
||||||
log4j.appender.DebugLog.Threshold=DEBUG
|
|
||||||
log4j.appender.DebugLog.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.DebugLog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
|
|
||||||
### 输出ERROR 级别以上的日志到=logs/error.log ###
|
|
||||||
log4j.appender.ErrorLog=org.apache.log4j.DailyRollingFileAppender
|
|
||||||
log4j.appender.ErrorLog.File=logs/error.log
|
|
||||||
log4j.appender.ErrorLog.Append=true
|
|
||||||
log4j.appender.ErrorLog.Threshold=ERROR
|
|
||||||
log4j.appender.ErrorLog.layout=org.apache.log4j.PatternLayout
|
|
||||||
log4j.appender.ErrorLog.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
|
|
|
@ -1,52 +0,0 @@
|
||||||
package com.taosdata.example.jdbcTaosdemo.utils;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
|
||||||
import java.time.temporal.ChronoUnit;
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
import static org.junit.Assert.*;
|
|
||||||
|
|
||||||
public class TimeStampUtilTest {
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void datetimeToLong() {
|
|
||||||
final String startTime = "2005-01-01 00:00:00.000";
|
|
||||||
long start = TimeStampUtil.datetimeToLong(startTime);
|
|
||||||
assertEquals(1104508800000l, start);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void longToDatetime() {
|
|
||||||
String datetime = TimeStampUtil.longToDatetime(1510000000000L);
|
|
||||||
assertEquals("2017-11-07 04:26:40.000", datetime);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getStartDateTime() {
|
|
||||||
int keep = 365;
|
|
||||||
|
|
||||||
Instant end = Instant.now();
|
|
||||||
System.out.println(end.toString());
|
|
||||||
System.out.println(end.toEpochMilli());
|
|
||||||
|
|
||||||
Instant start = end.minus(Duration.ofDays(keep));
|
|
||||||
System.out.println(start.toString());
|
|
||||||
System.out.println(start.toEpochMilli());
|
|
||||||
|
|
||||||
int numberOfRecordsPerTable = 10;
|
|
||||||
long timeGap = ChronoUnit.MILLIS.between(start, end) / (numberOfRecordsPerTable - 1);
|
|
||||||
System.out.println(timeGap);
|
|
||||||
|
|
||||||
System.out.println("===========================");
|
|
||||||
for (int i = 0; i < numberOfRecordsPerTable; i++) {
|
|
||||||
long ts = start.toEpochMilli() + (i * timeGap);
|
|
||||||
System.out.println(i + " : " + ts);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue