未验证 提交 79be15f5 编写于 作者: H huolibo 提交者: GitHub

add schemaless use doc (#8563)

上级 4df6b1b2
...@@ -8,16 +8,35 @@ import java.sql.Connection; ...@@ -8,16 +8,35 @@ import java.sql.Connection;
import java.sql.SQLException; import java.sql.SQLException;
import java.sql.Statement; import java.sql.Statement;
/**
* @author huolibo@qq.com
* @version v1.0.0
* @JDK: 1.8
* @description: this class is an extension of {@link Statement}. use like:
* Statement statement = conn.createStatement();
* SchemalessStatement schemalessStatement = new SchemalessStatement(statement);
* schemalessStatement.execute(sql);
* schemalessStatement.executeSchemaless(lines, SchemalessProtocolType, SchemalessTimestampType);
* @since 2021-11-03 17:10
*/
public class SchemalessStatement extends AbstractStatementWrapper { public class SchemalessStatement extends AbstractStatementWrapper {
public SchemalessStatement(Statement statement) { public SchemalessStatement(Statement statement) {
super(statement); super(statement);
} }
public void executeSchemaless(String[] strings, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException { /**
* batch insert schemaless lines
*
* @param lines schemaless data
* @param protocolType schemaless type {@link SchemalessProtocolType}
* @param timestampType Time precision {@link SchemalessTimestampType}
* @throws SQLException execute insert exception
*/
public void executeSchemaless(String[] lines, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException {
Connection connection = this.getConnection(); Connection connection = this.getConnection();
if (connection instanceof TSDBConnection) { if (connection instanceof TSDBConnection) {
TSDBConnection tsdbConnection = (TSDBConnection) connection; TSDBConnection tsdbConnection = (TSDBConnection) connection;
tsdbConnection.getConnector().insertLines(strings, protocolType, timestampType); tsdbConnection.getConnector().insertLines(lines, protocolType, timestampType);
} else if (connection instanceof RestfulConnection) { } else if (connection instanceof RestfulConnection) {
throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD, "restful connection is not supported currently"); throw TSDBError.createSQLException(TSDBErrorNumbers.ERROR_UNSUPPORTED_METHOD, "restful connection is not supported currently");
} else { } else {
...@@ -25,7 +44,15 @@ public class SchemalessStatement extends AbstractStatementWrapper { ...@@ -25,7 +44,15 @@ public class SchemalessStatement extends AbstractStatementWrapper {
} }
} }
public void executeSchemaless(String sql, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException { /**
executeSchemaless(new String[]{sql}, protocolType, timestampType); * only one insert
*
* @param line schemaless line
* @param protocolType schemaless type {@link SchemalessProtocolType}
* @param timestampType Time precision {@link SchemalessTimestampType}
* @throws SQLException execute insert exception
*/
public void executeSchemaless(String line, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException {
executeSchemaless(new String[]{line}, protocolType, timestampType);
} }
} }
package com.taosdata.jdbc.enums; package com.taosdata.jdbc.enums;
import java.util.Arrays;
public enum SchemalessProtocolType { public enum SchemalessProtocolType {
UNKNOWN, UNKNOWN,
LINE, LINE,
...@@ -7,4 +9,10 @@ public enum SchemalessProtocolType { ...@@ -7,4 +9,10 @@ public enum SchemalessProtocolType {
JSON, JSON,
; ;
public static SchemalessProtocolType parse(String type) {
return Arrays.stream(SchemalessProtocolType.values())
.filter(protocol -> type.equalsIgnoreCase(protocol.name()))
.findFirst().orElse(UNKNOWN);
}
} }
package com.taosdata.jdbc.enums; package com.taosdata.jdbc.enums;
public enum SchemalessTimestampType { public enum SchemalessTimestampType {
// Let the database decide
NOT_CONFIGURED, NOT_CONFIGURED,
HOURS, HOURS,
MINUTES, MINUTES,
......
package com.taosdata.jdbc; package com.taosdata.jdbc;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.taosdata.jdbc.enums.SchemalessProtocolType; import com.taosdata.jdbc.enums.SchemalessProtocolType;
import com.taosdata.jdbc.enums.SchemalessTimestampType; import com.taosdata.jdbc.enums.SchemalessTimestampType;
import org.junit.After; import org.junit.After;
...@@ -10,10 +12,14 @@ import org.junit.Test; ...@@ -10,10 +12,14 @@ import org.junit.Test;
import java.sql.*; import java.sql.*;
public class SchemalessInsertTest { public class SchemalessInsertTest {
private String host = "127.0.0.1"; private final String dbname = "test_schemaless_insert";
private String dbname = "test_schemaless_insert";
private Connection conn; private Connection conn;
/**
* schemaless insert compatible with influxdb
*
* @throws SQLException execute error
*/
@Test @Test
public void schemalessInsert() throws SQLException { public void schemalessInsert() throws SQLException {
// given // given
...@@ -41,6 +47,11 @@ public class SchemalessInsertTest { ...@@ -41,6 +47,11 @@ public class SchemalessInsertTest {
statement.close(); statement.close();
} }
/**
* telnet insert compatible with opentsdb
*
* @throws SQLException execute error
*/
@Test @Test
public void telnetInsert() throws SQLException { public void telnetInsert() throws SQLException {
// given // given
...@@ -71,6 +82,11 @@ public class SchemalessInsertTest { ...@@ -71,6 +82,11 @@ public class SchemalessInsertTest {
statement.close(); statement.close();
} }
/**
* json insert compatible with opentsdb json format
*
* @throws SQLException execute error
*/
@Test @Test
public void jsonInsert() throws SQLException { public void jsonInsert() throws SQLException {
// given // given
...@@ -113,13 +129,15 @@ public class SchemalessInsertTest { ...@@ -113,13 +129,15 @@ public class SchemalessInsertTest {
while (rs.next()) { while (rs.next()) {
rowCnt++; rowCnt++;
} }
// Assert.assertEquals(json.length, rowCnt);
Assert.assertEquals(((JSONArray) JSONObject.parse(json)).size(), rowCnt);
rs.close(); rs.close();
statement.close(); statement.close();
} }
@Before @Before
public void before() { public void before() {
String host = "127.0.0.1";
final String url = "jdbc:TAOS://" + host + ":6030/?user=root&password=taosdata"; final String url = "jdbc:TAOS://" + host + ":6030/?user=root&password=taosdata";
try { try {
conn = DriverManager.getConnection(url); conn = DriverManager.getConnection(url);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册