main.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "git.wecise.com/wecise/cgimport/importer"
  6. "git.wecise.com/wecise/cgimport/odbc"
  7. "github.com/wecisecode/util/mfmt"
  8. )
  9. // 获取配置信息
  10. //
  11. // 默认配置:
  12. // 当前工作目录下 与应用同名的 .conf 文件
  13. // 环境变量
  14. // 命令行参数
  15. var mcfg = odbc.Config
  16. var logger = odbc.Logger
  17. func init() {
  18. odbc.DefaultAppName = "cgimport"
  19. odbc.CommandArgsInfo = func() string {
  20. return `
  21. datapath=data # 指定数据文件路径
  22. reload=true # 重新导入所有数据,不指定则跳过已经导入的文件
  23. rebuild=true # 重新构建数据类结构,不指定则保持已有类结构和已有数据不变`
  24. }
  25. }
  26. func main() {
  27. if mcfg.GetString("help") != "" {
  28. fmt.Println(odbc.Usage())
  29. os.Exit(0)
  30. }
  31. // 配置参数
  32. // 文件目录
  33. datapath := mcfg.GetString("datapath", mcfg.GetString("cgi.datapath", "data"))
  34. // 并发数
  35. parallel := mcfg.GetInt("parallel", mcfg.GetInt("cgi.parallel", 20))
  36. //
  37. reload := mcfg.GetBool("reload") || mcfg.GetString("reload") == "reload"
  38. rebuild := mcfg.GetBool("rebuild") || mcfg.GetString("rebuild") == "rebuild"
  39. //
  40. logger.Info("datapath: ", datapath)
  41. logger.Info("parallel: ", parallel)
  42. logger.Info("reload: ", reload)
  43. logger.Info("rebuild: ", rebuild)
  44. logger.Info("access", odbc.LogFile, "for detail information")
  45. // 导入
  46. totalfilescount, totallinecount, totalrecordscount, totalretrycount, totalusetime, filescount, linescount, recordscount, retrycount, usetime, e := importer.ImportDir(datapath, parallel, rebuild, reload)
  47. if e != nil {
  48. logger.Error(e)
  49. panic(e)
  50. }
  51. if totalfilescount == 0 {
  52. logger.Info(`not found data files in "` + datapath + `"`)
  53. return
  54. }
  55. // 输出统计信息
  56. logger.Info("import", filescount, "files", linescount, "lines", recordscount, "records", retrycount, "retry times", "in", mfmt.FormatDuration(usetime))
  57. logger.Info("total import", totalfilescount, "files", totallinecount, "lines", totalrecordscount, "records", totalretrycount, "retry times", "in", mfmt.FormatDuration(totalusetime))
  58. // 验证
  59. if odbc.ODBCDebug || odbc.LogDebug {
  60. importer.Check()
  61. }
  62. os.Exit(0)
  63. }