提交 313e5de6 编写于 作者: aaronchen2k2k's avatar aaronchen2k2k

add 36hex seq column

上级 2a690c5f
...@@ -5,6 +5,7 @@ import ( ...@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
constant "github.com/easysoft/zendata/src/utils/const" constant "github.com/easysoft/zendata/src/utils/const"
logUtils "github.com/easysoft/zendata/src/utils/log" logUtils "github.com/easysoft/zendata/src/utils/log"
numbUtils "github.com/easysoft/zendata/src/utils/numb"
_ "github.com/mattn/go-sqlite3" _ "github.com/mattn/go-sqlite3"
) )
...@@ -12,30 +13,40 @@ import ( ...@@ -12,30 +13,40 @@ import (
func Upgrade() { func Upgrade() {
db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource) db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource)
if err != nil { if err != nil {
logUtils.Screen("fail to open " + constant.SqliteSource) logUtils.Screen("fail to open " + constant.SqliteSource + ": " + err.Error())
return return
} }
sql := "SELECT city.id, city.name, parent.name state, city.zipCode, city.cityCode " + sql := "SELECT id, 'name', state, zipCode, cityCode FROM city"
"FROM cn_city city JOIN cn_city parent ON city.parentCode = parent.areaCode"
rows, err := db.Query(sql) rows, err := db.Query(sql)
if err != nil { if err != nil {
logUtils.Screen("fail to exec query " + sql) logUtils.Screen("fail to exec query " + sql + ": " + err.Error())
return return
} }
sqls := make([]string, 0)
for rows.Next() { for rows.Next() {
var id int var id int
var name string var name string
var state string var state string
var zipCode int var zipCode string
var cityCode int var cityCode string
err = rows.Scan(&id, &name, &state, &zipCode, &cityCode) err = rows.Scan(&id, &name, &state, &zipCode, &cityCode)
if err != nil { if err != nil {
logUtils.Screen("fail to get sqlite3 row") logUtils.Screen("fail to get sqlite3 row: " + err.Error())
return return
} }
fmt.Println(id, name, state, zipCode, cityCode) fmt.Println(numbUtils.NumToBHex(id), name, state, zipCode, cityCode)
sql := fmt.Sprintf("UPDATE city SET seq = '%s' where id = %d;", numbUtils.NumToBHex(id), id)
sqls = append(sqls, sql)
}
for _, sql := range sqls {
_, err := db.Exec(sql)
if err != nil {
logUtils.Screen("fail to update row: " + err.Error())
}
} }
} }
\ No newline at end of file
package numbUtils
import (
"math"
"strings"
)
var num2char = "0123456789abcdefghijklmnopqrstuvwxyz"
func NumToBHex(num int) string {
n := 36
numStr := ""
for num != 0 {
yu := num % n
numStr = string(num2char[yu]) + numStr
num = num / n
}
numStr = strings.ToUpper(numStr)
numStr = strings.Repeat("0", 5 - len(numStr)) + numStr
return numStr
}
func BHex2Num(str string) int {
n := 36
str = strings.ToLower(str)
v := 0.0
length := len(str)
for i := 0; i < length; i++ {
s := string(str[i])
index := strings.Index(num2char, s)
v += float64(index) * math.Pow(float64(n), float64(length-1-i)) // 倒序
}
return int(v)
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册