74 lines
2.2 KiB
Go
74 lines
2.2 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/taosdata/driver-go/v3/af"
|
|
"github.com/taosdata/driver-go/v3/common"
|
|
"github.com/taosdata/driver-go/v3/common/param"
|
|
)
|
|
|
|
func checkErr(err error, prompt string) {
|
|
if err != nil {
|
|
fmt.Printf("%s\n", prompt)
|
|
panic(err)
|
|
}
|
|
}
|
|
|
|
func prepareStable(conn *af.Connector) {
|
|
_, err := conn.Exec("CREATE DATABASE power")
|
|
checkErr(err, "failed to create database")
|
|
_, err = conn.Exec("CREATE STABLE power.meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)")
|
|
checkErr(err, "failed to create stable")
|
|
_, err = conn.Exec("USE power")
|
|
checkErr(err, "failed to change database")
|
|
}
|
|
|
|
func main() {
|
|
conn, err := af.Open("localhost", "root", "taosdata", "", 6030)
|
|
checkErr(err, "fail to connect")
|
|
defer conn.Close()
|
|
prepareStable(conn)
|
|
// create stmt
|
|
stmt := conn.InsertStmt()
|
|
defer stmt.Close()
|
|
err = stmt.Prepare("INSERT INTO ? USING meters TAGS(?, ?) VALUES(?, ?, ?, ?)")
|
|
checkErr(err, "failed to create prepare statement")
|
|
|
|
// bind table name and tags
|
|
tagParams := param.NewParam(2).AddBinary([]byte("California.SanFrancisco")).AddInt(2)
|
|
err = stmt.SetTableNameWithTags("d1001", tagParams)
|
|
checkErr(err, "failed to execute SetTableNameWithTags")
|
|
|
|
// specify ColumnType
|
|
var bindType *param.ColumnType = param.NewColumnType(4).AddTimestamp().AddFloat().AddInt().AddFloat()
|
|
|
|
// bind values. note: can only bind one row each time.
|
|
valueParams := []*param.Param{
|
|
param.NewParam(1).AddTimestamp(time.Unix(1648432611, 249300000), common.PrecisionMilliSecond),
|
|
param.NewParam(1).AddFloat(10.3),
|
|
param.NewParam(1).AddInt(219),
|
|
param.NewParam(1).AddFloat(0.31),
|
|
}
|
|
err = stmt.BindParam(valueParams, bindType)
|
|
checkErr(err, "BindParam error")
|
|
err = stmt.AddBatch()
|
|
checkErr(err, "AddBatch error")
|
|
|
|
// bind one more row
|
|
valueParams = []*param.Param{
|
|
param.NewParam(1).AddTimestamp(time.Unix(1648432611, 749300000), common.PrecisionMilliSecond),
|
|
param.NewParam(1).AddFloat(12.6),
|
|
param.NewParam(1).AddInt(218),
|
|
param.NewParam(1).AddFloat(0.33),
|
|
}
|
|
err = stmt.BindParam(valueParams, bindType)
|
|
checkErr(err, "BindParam error")
|
|
err = stmt.AddBatch()
|
|
checkErr(err, "AddBatch error")
|
|
// execute
|
|
err = stmt.Execute()
|
|
checkErr(err, "Execute batch error")
|
|
}
|