/
generateSql.go
73 lines (65 loc) · 1.62 KB
/
generateSql.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package core
import (
"fmt"
"os"
"strings"
"github.com/tidwall/gjson"
)
func DoGenSql() {
rawFileName := "/Users/xxx/book/test/rawData.txt"
targetFileName := "/Users/xxx/book/test/sqlResult.txt"
GenerateSql(rawFileName, targetFileName)
}
func GenerateSql(rawFileName string, targetFileName string) {
bytes, err := os.ReadFile(rawFileName)
if err != nil {
fmt.Println(err)
return
}
result := gjson.Parse(string(bytes))
sql := result.Get("data.0.data.0.sql")
tableName := strings.Split(sql.Str, " ")[3]
columnsResult := result.Get("data.0.data.0.columns")
rowsResult := result.Get("data.0.data.0.rows")
fmt.Println(columnsResult)
fmt.Println(rowsResult)
sqls := make([]string, 0)
if rowsResult.IsArray() {
rowsArrayResult := rowsResult.Array()
for _, row := range rowsArrayResult {
fieldsResults := row.Get("result").Array()
sql := fmt.Sprintf("INSERT INTO %s (", tableName)
if columnsResult.IsArray() {
columnsArrayResult := columnsResult.Array()
for i, column := range columnsArrayResult {
if i == len(columnsArrayResult)-1 {
sql += column.String() + ")"
} else {
sql += column.String() + ", "
}
}
} else {
return
}
sql += "VALUES ("
for i, field := range fieldsResults {
if i == len(fieldsResults)-1 {
sql += field.Raw + ");"
} else {
sql += field.Raw + ", "
}
}
fmt.Println(sql)
sqls = append(sqls, sql)
}
}
file, err := os.Create(targetFileName)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
finalDataString := strings.Join(sqls, "\n")
file.Write([]byte(finalDataString))
fmt.Println("success~~~~")
}