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

add 36hex seq column

上级 2a690c5f
......@@ -5,6 +5,7 @@ import (
"fmt"
constant "github.com/easysoft/zendata/src/utils/const"
logUtils "github.com/easysoft/zendata/src/utils/log"
numbUtils "github.com/easysoft/zendata/src/utils/numb"
_ "github.com/mattn/go-sqlite3"
)
......@@ -12,30 +13,40 @@ import (
func Upgrade() {
db, err := sql.Open(constant.SqliteDriver, constant.SqliteSource)
if err != nil {
logUtils.Screen("fail to open " + constant.SqliteSource)
logUtils.Screen("fail to open " + constant.SqliteSource + ": " + err.Error())
return
}
sql := "SELECT city.id, city.name, parent.name state, city.zipCode, city.cityCode " +
"FROM cn_city city JOIN cn_city parent ON city.parentCode = parent.areaCode"
sql := "SELECT id, 'name', state, zipCode, cityCode FROM city"
rows, err := db.Query(sql)
if err != nil {
logUtils.Screen("fail to exec query " + sql)
logUtils.Screen("fail to exec query " + sql + ": " + err.Error())
return
}
sqls := make([]string, 0)
for rows.Next() {
var id int
var name string
var state string
var zipCode int
var cityCode int
var zipCode string
var cityCode string
err = rows.Scan(&id, &name, &state, &zipCode, &cityCode)
if err != nil {
logUtils.Screen("fail to get sqlite3 row")
logUtils.Screen("fail to get sqlite3 row: " + err.Error())
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.
先完成此消息的编辑!
想要评论请 注册