entity.go 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. package entity
  2. import (
  3. "fmt"
  4. "log"
  5. . "online_datasync/config"
  6. . "online_datasync/db"
  7. . "app.yhyue.com/moapp/jybase/common"
  8. "app.yhyue.com/moapp/jybase/mysql"
  9. )
  10. type Entity interface {
  11. Run(start_unix, end_unix int64, start_layout, end_layout string)
  12. TableName() string
  13. SaveFields() []string
  14. }
  15. //
  16. func sync_add(m *mysql.Mysql, tableName string, saveField []string, id int64, f func(fv map[string]interface{})) (lastId int64) {
  17. log.Println("开始同步", tableName, "表。。。")
  18. index := 0
  19. array := []interface{}{}
  20. lastId = id
  21. m.SelectByBath(Config.SelectBathSize, func(l *[]map[string]interface{}) {
  22. for _, v := range *l {
  23. index++
  24. lastId = Int64All(v["id"])
  25. for _, field := range saveField {
  26. array = append(array, v[field])
  27. }
  28. if index%Config.InsertBathSize == 0 {
  29. log.Println("同步", tableName, "表", index)
  30. Mysql_Main.InsertIgnoreBatch(tableName, saveField, array)
  31. array = []interface{}{}
  32. }
  33. }
  34. }, fmt.Sprintf(`select * from %s where id>? order by id`, tableName), id)
  35. if len(array) > 0 {
  36. Mysql_Main.InsertIgnoreBatch(tableName, saveField, array)
  37. array = []interface{}{}
  38. }
  39. log.Println("同步", tableName, "表结束。。。", index)
  40. return
  41. }