main.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. package main
  2. import (
  3. "database/sql"
  4. "fmt"
  5. _ "github.com/taosdata/driver-go/v3/taosSql"
  6. "log"
  7. "math/rand"
  8. "strings"
  9. "time"
  10. )
  11. var DateFmtYYYYMMDDHHmmss = "2006-01-02 15:04:05"
  12. func main() {
  13. var taosDSN = "root:taosdata@tcp(192.168.0.153:6030)/test2"
  14. taos, err := sql.Open("taosSql", taosDSN)
  15. if err != nil {
  16. log.Fatalln("failed to connect TDengine, err:", err)
  17. return
  18. }
  19. defer taos.Close()
  20. // 测试插入数据
  21. now := time.Now().Add(-12 * time.Hour)
  22. fmt.Println("开始 ", time.Now().Format(DateFmtYYYYMMDDHHmmss))
  23. for p := 0; p < 20; p++ {
  24. for k := 0; k < 10000; k++ {
  25. d := ""
  26. account := fmt.Sprintf("iaa%s", GetRandomString(39))
  27. for i := 40; i > 1; i-- {
  28. day := now.AddDate(0, 0, -i)
  29. operation := rand.Intn(19) + 1
  30. t := rand.Intn(2) + 1
  31. for j := 0; j < 3; j++ {
  32. num := 1
  33. rand.Seed(time.Now().UnixNano())
  34. addMill := rand.Intn(24) + 1
  35. gas := 0
  36. if operation == 1 {
  37. // 创建链账户授权
  38. if t != 1 {
  39. gas = rand.Intn(20000) + 50000
  40. }
  41. } else if operation == 8 || operation == 9 || operation == 10 || operation == 11 || operation == 17 || operation == 18 || operation == 19 || operation == 20 {
  42. gas = rand.Intn(20000) + 50000
  43. num = rand.Intn(9) + 1
  44. gas = gas * num
  45. } else {
  46. gas = rand.Intn(20000) + 50000
  47. }
  48. //fmt.Println(day.Add(time.Duration(j*22)*time.Minute).Format(DateFmtYYYYMMDDHHmmss), a)
  49. d = fmt.Sprintf("%s (%d,%d,%d)", d, day.Add(time.Duration(j*addMill)*time.Hour).UnixMilli(), num, gas)
  50. fmt.Println(d)
  51. return
  52. }
  53. d = fmt.Sprintf("insert into %s USING tx_metrics TAGS (%d, %d, %d,\"%s\", %d, %d) values%s", account, 1, 10, 20, account, operation, t, d)
  54. _, err = taos.Exec(d)
  55. if err != nil {
  56. fmt.Println("failed to insert, err:", err)
  57. return
  58. }
  59. d = ""
  60. }
  61. fmt.Println("完成", k, "个 ", time.Now().Format(DateFmtYYYYMMDDHHmmss))
  62. }
  63. }
  64. fmt.Println("结束 ", time.Now().Format(DateFmtYYYYMMDDHHmmss))
  65. }
  66. func GetRandomString(l int) string {
  67. now := time.Now().Format("060102150405.000")
  68. nowFmt := strings.Replace(now, ".", "", -1)
  69. str := "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
  70. bytes := []byte(str)
  71. var result []byte
  72. j := 0
  73. r := rand.New(rand.NewSource(time.Now().UnixNano() + int64(rand.Intn(100))))
  74. for i := 0; i < l; i++ {
  75. if i%2 != 0 && j < len(nowFmt) {
  76. result = append(result, nowFmt[j])
  77. j++
  78. } else {
  79. result = append(result, bytes[r.Intn(len(bytes))])
  80. }
  81. }
  82. return string(result)
  83. }