github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/cmd/test/others/func/import/text.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "strings" 7 8 "github.com/easysoft/zendata/cmd/test/others/func/comm" 9 fileUtils "github.com/easysoft/zendata/pkg/utils/file" 10 ) 11 12 var ( 13 tableName string 14 filePath string 15 colNum int 16 ) 17 18 func main() { 19 flag.StringVar(&tableName, "t", "", "") 20 flag.StringVar(&filePath, "f", "", "") 21 flag.IntVar(&colNum, "c", 0, "") 22 23 flag.Parse() 24 25 tableName = "biz_" + strings.TrimLeft(tableName, "biz_") 26 db := comm.GetDB() 27 db.Exec(fmt.Sprintf(comm.TruncateTable, tableName)) 28 29 createTableSql := fmt.Sprintf(comm.CreateTableTempl, tableName) 30 err := db.Exec(createTableSql).Error 31 if err != nil { 32 fmt.Printf("create table %s failed, err %s", tableName, err.Error()) 33 return 34 } 35 36 content := fileUtils.ReadFile(filePath) 37 insertSqlArr := make([]string, 0) 38 39 for _, line := range strings.Split(content, "\n") { 40 arr := strings.Split(strings.TrimSpace(line), " ") 41 42 if colNum >= len(arr) { 43 continue 44 } 45 46 content := strings.TrimSpace(arr[colNum]) 47 if content == "" { 48 continue 49 } 50 51 insert := fmt.Sprintf("('%s')", content) 52 insertSqlArr = append(insertSqlArr, insert) 53 } 54 55 for i := 0; i < 1000; i++ { 56 start := i * 10000 57 end := (i + 1) * 10000 58 59 if end > len(insertSqlArr) { 60 end = len(insertSqlArr) 61 } 62 63 arr := insertSqlArr[start:end] 64 65 sql := fmt.Sprintf(comm.InsertTemplate, tableName, strings.Join(arr, ",")) 66 err = db.Exec(sql).Error 67 if err != nil { 68 fmt.Printf("insert data failed, err %s", err.Error()) 69 return 70 } 71 72 if end >= len(insertSqlArr) { 73 break 74 } 75 } 76 }