TDengineDB

package
v1.6.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 3, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TSDB_DATA_TYPE_NULL       = 0  // 1 bytes
	TSDB_DATA_TYPE_BOOL       = 1  // 1 bytes
	TSDB_DATA_TYPE_TINYINT    = 2  // 1 byte
	TSDB_DATA_TYPE_SMALLINT   = 3  // 2 bytes
	TSDB_DATA_TYPE_INT        = 4  // 4 bytes
	TSDB_DATA_TYPE_BIGINT     = 5  // 8 bytes
	TSDB_DATA_TYPE_FLOAT      = 6  // 4 bytes
	TSDB_DATA_TYPE_DOUBLE     = 7  // 8 bytes
	TSDB_DATA_TYPE_BINARY     = 8  // string
	TSDB_DATA_TYPE_TIMESTAMP  = 9  // 8 bytes
	TSDB_DATA_TYPE_NCHAR      = 10 // unicode string
	TSDB_DATA_TYPE_UTINYINT   = 11 // 1 byte
	TSDB_DATA_TYPE_USMALLINT  = 12 // 2 bytes
	TSDB_DATA_TYPE_UINT       = 13 // 4 bytes
	TSDB_DATA_TYPE_UBIGINT    = 14 // 8 bytes
	TSDB_DATA_TYPE_JSON       = 15
	TSDB_DATA_TYPE_VARBINARY  = 16
	TSDB_DATA_TYPE_DECIMAL    = 17
	TSDB_DATA_TYPE_BLOB       = 18
	TSDB_DATA_TYPE_MEDIUMBLOB = 19
	TSDB_DATA_TYPE_MAX        = 20
)
View Source
const (
	TSDB_DATA_TYPE_NULL_Str      = "NULL"
	TSDB_DATA_TYPE_BOOL_Str      = "BOOL"
	TSDB_DATA_TYPE_TINYINT_Str   = "TINYINT"
	TSDB_DATA_TYPE_SMALLINT_Str  = "SMALLINT"
	TSDB_DATA_TYPE_INT_Str       = "INT"
	TSDB_DATA_TYPE_BIGINT_Str    = "BIGINT"
	TSDB_DATA_TYPE_FLOAT_Str     = "FLOAT"
	TSDB_DATA_TYPE_DOUBLE_Str    = "DOUBLE"
	TSDB_DATA_TYPE_BINARY_Str    = "VARCHAR"
	TSDB_DATA_TYPE_TIMESTAMP_Str = "TIMESTAMP"
	TSDB_DATA_TYPE_NCHAR_Str     = "NCHAR"
	TSDB_DATA_TYPE_UTINYINT_Str  = "TINYINT UNSIGNED"
	TSDB_DATA_TYPE_USMALLINT_Str = "SMALLINT UNSIGNED"
	TSDB_DATA_TYPE_UINT_Str      = "INT UNSIGNED"
	TSDB_DATA_TYPE_UBIGINT_Str   = "BIGINT UNSIGNED"
	TSDB_DATA_TYPE_JSON_Str      = "JSON"
)

Variables

Functions

This section is empty.

Types

type DataHandFn added in v1.4.0

type DataHandFn func(key string, sVal interface{}) (tVal interface{})

DataHandFn 数据处理方法

type ExecuteResult

type ExecuteResult struct {
	ColNames  []string        //列名
	ColTypes  []int           //列类型
	ColLength []int64         //列长度
	Data      [][]interface{} //数据二维数组切片
	Rows      int             //影响行数
	Code      int             //错误码
	Desc      string          //错误描述
}

ExecuteResult 执行失败结果

{
	"status":"error",
	"code":897,
	"desc":"Database already exists"
}

执行成功结果

{
	"status":"succ",
	"head":["ts","current","voltage","phase","location","groupdid"],
	"data":[["2020-09-09 17:16:47.332",10.20000,219,0.32000,"Beijing.Chaoyang",2]],
	"rows":1
}

说明:

status: 告知操作结果是成功还是失败。 head: 表的定义,如果不返回结果集,则仅有一列“affected_rows”。(从 2.0.17 版本开始,建议不要依赖 head 返回值来判断数据列类型,而推荐使用 column_meta。在未来版本中,有可能会从返回值中去掉 head 这一项。) column_meta: 从 2.0.17 版本开始,返回值中增加这一项来说明 data 里每一列的数据类型。具体每个列会用三个值来说明,分别为:列名、列类型、类型长度。例如["current",6,4]表示列名为“current”;列类型为 6,也即 float 类型;类型长度为 4,也即对应 4 个字节表示的 float。如果列类型为 binary 或 nchar,则类型长度表示该列最多可以保存的内容长度,而不是本次返回值中的具体数据长度。当列类型是 nchar 的时候,其类型长度表示可以保存的 unicode 字符数量,而不是 bytes。 data: 具体返回的数据,一行一行的呈现,如果不返回结果集,那么就仅有[[affected_rows]]。data 中每一行的数据列顺序,与 column_meta 中描述数据列的顺序完全一致。 rows: 表明总共多少行数据。 column_meta 中的列类型说明: 1:BOOL 2:TINYINT 3:SMALLINT 4:INT 5:BIGINT 6:FLOAT 7:DOUBLE 8:BINARY 9:TIMESTAMP 10:NCHAR

func (*ExecuteResult) GetAffectedRows added in v1.6.16

func (e *ExecuteResult) GetAffectedRows() (int64, error)

GetAffectedRows 获取受影响行数

func (*ExecuteResult) ToSlice added in v1.6.13

func (e *ExecuteResult) ToSlice(results interface{}) error

ToSlice 转换为切片对象

func (*ExecuteResult) ToSliceMap added in v1.6.13

func (e *ExecuteResult) ToSliceMap() ([]map[string]interface{}, error)

ToSliceMap 获取执行结果转切片map

type ITDengineRepository

type ITDengineRepository interface {
	// GetDatabase 获取数据库名
	GetDatabase() string

	//GetSuperTableName 获取表名称
	GetSuperTableName() string

	//Add 添加数据(单个)对单个表操作(不能存储带有特殊字符内容如:\n \r \...)
	//tableName:表名称   value:1,“A”,123   tags:"北京",24
	Add(tableName, value, tags string) (int64, error)

	//AddMany 添加数据(单个或批量)对单个表操作(不能存储带有特殊字符内容如:\n \r \...)
	//map[ key:表名称,value:{"Tags":"tag0,tag1...",data:["\"1538548695000, 12.6, 218, 0.33\",""\"1538548695000, 12.6, 218, 0.33\"...]}} ] values 最大长度不能超过 数据库配置值(数据库默认大小62k)
	AddMany(dataDict map[string]*InsertData) (int64, error)

	//Execute 直接执行sqlCmd,可查询,可插入,得到影响结果(不能存储带有特殊字符内容如:\n \r \...)
	Execute(sqlCmd string) (*ExecuteResult, error)

	// QueryCount 查询总个数
	// queryWhere:条件(a='123')
	QueryCount(queryWhere string) (int64, error)

	// QuerySuperTop 根据条件查询超级中的数据
	// columns:列名,...(*或""表示全部)
	// queryWhere:条件(a='123');
	// topCount: 排序后前多少条;
	// sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts;
	QuerySuperTop(columns, queryWhere string, topCount, sort int) (result *ExecuteResult, err error)

	// QuerySuperPage 根据条件查询超级中的数据
	// columns:列名,...(*或""表示全部);
	// queryWhere:条件(a='123');
	// pageIndex:页数从1开始;
	// pageSize:页条数
	// sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts;
	QuerySuperPage(columns, queryWhere string, pageIndex, pageSize, sort int) (result *ExecuteResult, totalCount int64, err error)

	// QuerySuper 根据条件查询超级中的数据
	// columns:列名,...(*或""表示全部);
	// queryWhere:条件(a='123');
	// pageIndex:页数从1开始;
	// pageSize:页条数
	// sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts;
	// isTotalCount:是否需要总数
	QuerySuper(columns, queryWhere string, pageIndex, pageSize, sort int, isTotalCount bool) (result *ExecuteResult, totalCount int64, err error)
}

ITDengineRepository 仓储

func NewTDengineRepository added in v1.6.16

func NewTDengineRepository(database string, superTableName string, client *TDengineClient) ITDengineRepository

NewTDengineRepository 数据库存储

type ITDengineTable added in v1.6.4

type ITDengineTable interface {
	GetSuperTableName() string //超级表名称
	GetTagColumn() string      //tag 列名和类型的定义如:accountName binary(64),...
	GetFieldColumn() string    //内容字段的列名和类型定义如:name binary(64),...
}

ITDengineTable 表接口

type InsertData

type InsertData struct {
	Tags string   //标签(设备属性除时间外的索引,注同一个表一个标签值是一样的)"Tags":"tag0,tag1...",
	Data []string //数据内容(数据库多行数据) "data":["\"1538548695000, 12.6, 218, 0.33\",""\"1538548695000, 12.6, 218, 0.33\"...]
}

InsertData 插入时表数据

type TDengineClient

type TDengineClient struct {
	// contains filtered or unexported fields
}

TDengineClient 数据库客户端 http://192.168.1.215:6041/rest/sql

func GetTDengineClient

func GetTDengineClient(config map[string]string) *TDengineClient

GetTDengineClient 获取客户端

func NewTDengineClient

func NewTDengineClient(ipport string, user string, password string, timeout time.Duration, retryCount int) *TDengineClient

NewTDengineClient 初始化客户端

func (*TDengineClient) Execute

func (c *TDengineClient) Execute(sqlCmd string) (*ExecuteResult, error)

Execute 执行SQL sqlCmd sql语句

type TDengineContent

type TDengineContent struct {
	// contains filtered or unexported fields
}

TDengineContent 数据库上下文

func DataBaseMapping

func DataBaseMapping(mappingName string, configFn func(mappingName string) map[string]string, iTDengineTablesFn func() []ITDengineTable) *TDengineContent

DataBaseMapping 添加映射 @client 连接对象 @dataName 数据库名

func (*TDengineContent) Execute added in v1.6.4

func (t *TDengineContent) Execute(sqlConn string) (*ExecuteResult, error)

Execute 执行sql

func (*TDengineContent) GetConfig added in v1.6.4

func (t *TDengineContent) GetConfig() map[string]string

GetConfig 获取配置

func (*TDengineContent) GetDatabase added in v1.6.4

func (t *TDengineContent) GetDatabase() string

GetDatabase 获取数据库名称

func (*TDengineContent) GetTDengineRepository added in v1.1.1

func (t *TDengineContent) GetTDengineRepository(entity ITDengineTable) (ITDengineRepository, error)

GetTDengineRepository 获取集合仓储 entity 结构体,columnModel列模型("Beijng.Chaoyang", 2) INSERT INTO d1001 USING METERS TAGS ("Beijng.Chaoyang", 2) VALUES (now, 10.2, 219, 0.32);

type TDengineRepository

type TDengineRepository struct {
	// contains filtered or unexported fields
}

TDengineRepository 数据库存储

func (*TDengineRepository) Add added in v1.6.0

func (t *TDengineRepository) Add(tableName, value, tags string) (int64, error)

Add 插入数据(单个)对单个表操作(不能存储带有特殊字符内容如:\n \r \...) tableName:表名称 value:1,“A”,123

func (*TDengineRepository) AddMany added in v1.6.0

func (t *TDengineRepository) AddMany(dataDict map[string]*InsertData) (int64, error)

AddMany 插入数据(单个或批量)对单个表操作(不能存储带有特殊字符内容如:\n \r \...) show tables like 't_%' map[ key:表名称,value:{"Tags":"tag0,tag1...",data:["\"1538548695000, 12.6, 218, 0.33\",""\"1538548695000, 12.6, 218, 0.33\"...]}} ] values 最大长度不能超过 数据库配置值(数据库默认大小62k) INSERT INTO d1001 USING METERS TAGS ("Beijng.Chaoyang", 2) VALUES (now, 10.2, 219, 0.32); INSERT INTO d1001 VALUES (1538548685000, 10.3, 219, 0.31) (1538548695000, 12.6, 218, 0.33) d1002 VALUES (1538548696800, 12.3, 221, 0.31); CREATE TABLE meters (ts timestamp, current float, voltage int, phase float) TAGS (location binary(64), groupdId int);

func (*TDengineRepository) Execute

func (t *TDengineRepository) Execute(sqlCmd string) (*ExecuteResult, error)

Execute 执行[直接执行sql得影响行数](不能存储带有特殊字符内容如:\n \r \...)

func (*TDengineRepository) GetDatabase

func (t *TDengineRepository) GetDatabase() string

GetDatabase 获取数据库名

func (*TDengineRepository) GetSuperTableName

func (t *TDengineRepository) GetSuperTableName() string

GetSuperTableName 获取表名称

func (*TDengineRepository) QueryCount added in v1.4.0

func (t *TDengineRepository) QueryCount(queryWhere string) (int64, error)

QueryCount 查询总个数 queryWhere:条件(a='123')

func (*TDengineRepository) QuerySuper added in v1.4.0

func (t *TDengineRepository) QuerySuper(columns, queryWhere string, pageIndex, pageSize, sort int, isTotalCount bool) (result *ExecuteResult, totalCount int64, err error)

QuerySuper 根据条件查询超级中的数据 columns:列名,...(*或""表示全部); queryWhere:条件(a='123'); pageIndex:页数从1开始; pageSize:页条数 sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts; isTotalCount:是否需要总数

func (*TDengineRepository) QuerySuperPage added in v1.4.0

func (t *TDengineRepository) QuerySuperPage(columns, queryWhere string, pageIndex, pageSize, sort int) (result *ExecuteResult, totalCount int64, err error)

QuerySuperPage 根据条件查询超级中的数据 columns:列名,...(*或""表示全部); queryWhere:条件(a='123'); pageIndex:页数从1开始; pageSize:页条数 sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts;

func (*TDengineRepository) QuerySuperTop added in v1.4.0

func (t *TDengineRepository) QuerySuperTop(columns, queryWhere string, topCount, sort int) (result *ExecuteResult, err error)

QuerySuperTop 根据条件查询超级中的数据 columns:列名,...(*或""表示全部) queryWhere:条件(a='123'); topCount: 排序后前多少条; sort排序(只支持时间): 0 => 默认,1 => order by ts desc, 2 => order by ts;

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL