update at 2023/08/14
This commit is contained in:
BIN
tools/loadcmxls/1.txt
Normal file
BIN
tools/loadcmxls/1.txt
Normal file
Binary file not shown.
53
tools/loadcmxls/db.go
Normal file
53
tools/loadcmxls/db.go
Normal file
@@ -0,0 +1,53 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"xorm.io/xorm"
|
||||
)
|
||||
|
||||
var xEngine *xorm.Engine
|
||||
|
||||
func XormConnectDatabaseWithUri(sql string) (*xorm.Engine, error) {
|
||||
// sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local", db.User, db.Password, db.Host, db.Port, db.Name)
|
||||
sqlStr := fmt.Sprintf("%s?charset=utf8&parseTime=true&loc=Local", sql)
|
||||
// fmt.Printf("sqlStr:%s:******@tcp(%s:%s)/%s?charset=utf8&parseTime=true&loc=Local", db.User, db.Host, db.Port, db.Name)
|
||||
var err error
|
||||
xEngine, err = xorm.NewEngine("mysql", sqlStr) //1、Create xorm engine
|
||||
if err != nil {
|
||||
fmt.Println("Failed to connect database:", err)
|
||||
return nil, err
|
||||
}
|
||||
// xEngine.ShowSQL(true)
|
||||
return xEngine, nil
|
||||
}
|
||||
|
||||
type CmTitle struct {
|
||||
// Id int `json:"id" xorm:"pk 'id' autoincr"`
|
||||
NeType string `json:"neType"`
|
||||
Object string `json:"object" xorm:"object"`
|
||||
Code string `json:"code"`
|
||||
CmEn string `json:"cmEn" xorm:"cm_en"`
|
||||
CmCn string `json:"cmCn" xorm:"cm_cn"`
|
||||
Description string `json:"description"`
|
||||
}
|
||||
|
||||
func XormInsertCmTitle(row *CmTitle) (int64, error) {
|
||||
|
||||
session := xEngine.NewSession()
|
||||
defer session.Close()
|
||||
_, err := session.
|
||||
Table("cm_title").
|
||||
Where("ne_type = ? and code = ? and cm_en = ?", row.NeType, row.Code, row.CmEn).
|
||||
Delete()
|
||||
if err != nil {
|
||||
fmt.Println("Failed to delete cm_title:", err)
|
||||
}
|
||||
affected, err := session.Table("cm_title").Insert(row)
|
||||
if err != nil {
|
||||
fmt.Println("Failed to insert cm_title:", err)
|
||||
}
|
||||
|
||||
return affected, err
|
||||
}
|
||||
109
tools/loadcmxls/load.go
Normal file
109
tools/loadcmxls/load.go
Normal file
@@ -0,0 +1,109 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
|
||||
// Yaml struct of config
|
||||
type YamlConfig struct {
|
||||
Logger struct {
|
||||
File string `yaml:"file"`
|
||||
Level string `yaml:"level"`
|
||||
} `yaml:"logger"`
|
||||
|
||||
Rest struct {
|
||||
BindIP string `yaml:"bindip"`
|
||||
Port uint16 `yaml:"port"`
|
||||
} `yaml:"rest"`
|
||||
|
||||
Database struct {
|
||||
Type string `yaml:"type"`
|
||||
User string `yaml:"user"`
|
||||
Password string `yaml:"password"`
|
||||
Host string `yaml:"host"`
|
||||
Port string `yaml:"port"`
|
||||
Name string `yaml:"name"`
|
||||
} `yaml:"database"`
|
||||
|
||||
CmFileDir string `yaml:"cmfiledir"`
|
||||
}
|
||||
|
||||
var yamlConfig YamlConfig
|
||||
|
||||
func ReadConfig(configFile string) {
|
||||
yamlFile, err := ioutil.ReadFile(configFile)
|
||||
if err != nil {
|
||||
fmt.Printf("ioutil.ReadFile %s err %v", configFile, err)
|
||||
}
|
||||
// fmt.Println("yamlfile:", string(yamlFile))
|
||||
|
||||
err = yaml.Unmarshal(yamlFile, &yamlConfig)
|
||||
if err != nil {
|
||||
fmt.Printf("Unmarshal: %v when to struct", err)
|
||||
}
|
||||
}
|
||||
|
||||
func GetYamlConfig() *YamlConfig {
|
||||
return &yamlConfig
|
||||
}
|
||||
|
||||
func GetAllFile(dir string, s []string) ([]string, error) {
|
||||
fmt.Println("GetAllFile processing...", dir)
|
||||
fmt.Println("dir:", dir)
|
||||
|
||||
rd, err := ioutil.ReadDir(dir)
|
||||
if err != nil {
|
||||
fmt.Println("read dir fail:", err)
|
||||
return s, err
|
||||
}
|
||||
|
||||
for _, fi := range rd {
|
||||
if !fi.IsDir() {
|
||||
fullName := dir + "/" + fi.Name()
|
||||
s = append(s, fullName)
|
||||
}
|
||||
}
|
||||
return s, nil
|
||||
}
|
||||
|
||||
const defaultConfigFile = "./loadcmxls.yaml"
|
||||
|
||||
var (
|
||||
version string
|
||||
buildTime string
|
||||
goVer string
|
||||
)
|
||||
|
||||
var pfiles []string
|
||||
|
||||
func init() {
|
||||
cfile := flag.String("c", defaultConfigFile, "config file")
|
||||
pfile := flag.String("f", "", "cm file")
|
||||
pv := flag.Bool("v", false, "print version")
|
||||
ph := flag.Bool("h", false, "print help")
|
||||
|
||||
flag.Parse()
|
||||
if *pv {
|
||||
fmt.Printf("OMC loadpmxls version: %s\n%s\n%s\n\n", version, buildTime, goVer)
|
||||
os.Exit(0)
|
||||
}
|
||||
if *ph {
|
||||
flag.Usage()
|
||||
os.Exit(0)
|
||||
}
|
||||
|
||||
ReadConfig(*cfile)
|
||||
|
||||
fmt.Println("pfile:", *pfile)
|
||||
if *pfile != "" {
|
||||
pfiles = append(pfiles, *pfile)
|
||||
} else {
|
||||
pfiles, _ = GetAllFile(yamlConfig.CmFileDir, pfiles)
|
||||
}
|
||||
fmt.Println("pfiles:", pfiles)
|
||||
}
|
||||
BIN
tools/loadcmxls/loadcmxls
Normal file
BIN
tools/loadcmxls/loadcmxls
Normal file
Binary file not shown.
77
tools/loadcmxls/loadcmxls.go
Normal file
77
tools/loadcmxls/loadcmxls.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/xuri/excelize/v2"
|
||||
)
|
||||
|
||||
func main() {
|
||||
fmt.Println("========================= OMC loadpmxls startup =========================")
|
||||
fmt.Println("OMC loadpmxls version: %s %s %s", version, buildTime, goVer)
|
||||
|
||||
for _, f := range pfiles {
|
||||
fmt.Println("f:", f)
|
||||
db := yamlConfig.Database
|
||||
sqlStr := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", db.User, db.Password, db.Host, db.Port, db.Name)
|
||||
XormConnectDatabaseWithUri(sqlStr)
|
||||
LoadCmIntoCmTitle(f)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func LoadCmIntoCmTitle(file string) {
|
||||
fmt.Println("file len:", file, len(file))
|
||||
f, err := excelize.OpenFile(file)
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
list := f.GetSheetList()
|
||||
if err != nil {
|
||||
fmt.Println(err.Error())
|
||||
return
|
||||
}
|
||||
fmt.Println(list)
|
||||
dl := len(yamlConfig.CmFileDir) + 1
|
||||
neType := file[dl : dl+3]
|
||||
fmt.Println("neType:", neType)
|
||||
objectMap := make(map[string]string, 0)
|
||||
for _, s := range list {
|
||||
|
||||
if s[0] == 'I' {
|
||||
rows, _ := f.GetRows(s)
|
||||
for _, row := range rows[1:] {
|
||||
// fmt.Println("row:", row)
|
||||
if len(row) > 1 {
|
||||
fmt.Println("row[0]:", row[0], "row[1]", row[1])
|
||||
objectMap[row[0]] = row[1]
|
||||
}
|
||||
}
|
||||
fmt.Println("objectMap:", objectMap)
|
||||
}
|
||||
if s[0] == 'A' {
|
||||
rows, _ := f.GetRows(s)
|
||||
var code, desc, object string
|
||||
object = objectMap[s]
|
||||
fmt.Println("object:", object, "s:", s)
|
||||
for _, row := range rows[1:] {
|
||||
if row[0] != "" {
|
||||
code = row[0]
|
||||
}
|
||||
if len(row) > 4 && row[4] != "" {
|
||||
desc = row[4]
|
||||
}
|
||||
cmEn := strings.Replace(row[2], " ", "", -1)
|
||||
cmEn = strings.Replace(cmEn, "\n", "", -1)
|
||||
cmCn := strings.Replace(row[3], " ", "", -1)
|
||||
cmCn = strings.Replace(cmCn, "\n", "", -1)
|
||||
cmTitle := CmTitle{neType, object, code, cmEn, cmCn, desc}
|
||||
fmt.Println("cmTitle:", cmTitle)
|
||||
XormInsertCmTitle(&cmTitle)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
tools/loadcmxls/loadcmxls.yaml
Normal file
17
tools/loadcmxls/loadcmxls.yaml
Normal file
@@ -0,0 +1,17 @@
|
||||
logger:
|
||||
file: ./loadpmxls.log
|
||||
level: debug
|
||||
|
||||
rest:
|
||||
bindip: 0.0.0.0
|
||||
port: 3040
|
||||
|
||||
database:
|
||||
type: mysql
|
||||
user: root
|
||||
password: 1000omc@kp!
|
||||
host: 127.0.0.1
|
||||
port: 33066
|
||||
name: omc_db
|
||||
|
||||
cmfiledir: ../../config/cm
|
||||
22
tools/loadcmxls/makefile
Normal file
22
tools/loadcmxls/makefile
Normal file
@@ -0,0 +1,22 @@
|
||||
# Makefile for rest agent project
|
||||
|
||||
PROJECT = OMC
|
||||
VERSION = 5GC16.1.1
|
||||
PLATFORM = amd64
|
||||
DEBDIR = ../../../deb
|
||||
ETCDIR = ../../../etc
|
||||
RELEASEDIR = ../../../release
|
||||
LIBDIR = ../lib
|
||||
BINNAME = loadcmxls
|
||||
|
||||
.PHONY: build $(BINNAME)
|
||||
build $(BINNAME):
|
||||
go build -o $(BINNAME) -v -ldflags "-X 'main.version=$(VERSION)' \
|
||||
-X 'main.buildTime=`date`' \
|
||||
-X 'main.goVer=`go version`'"
|
||||
|
||||
run: $(BINNAME)
|
||||
./$(BINNAME)
|
||||
|
||||
clean:
|
||||
rm ./$(BINNAME)
|
||||
Reference in New Issue
Block a user