mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-10-05 16:57:07 +08:00
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package parser
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/zhufuyi/sponge/pkg/ggorm"
|
|
)
|
|
|
|
var sqliteToMysqlTypeMap = map[string]string{
|
|
" INTEGER ": " INT ",
|
|
" REAL ": " FLOAT ",
|
|
" BOOLEAN ": " TINYINT ",
|
|
" integer ": " INT ",
|
|
" real ": " FLOAT ",
|
|
" boolean ": " TINYINT ",
|
|
}
|
|
|
|
// GetSqliteTableInfo get table info from sqlite
|
|
func GetSqliteTableInfo(dbFile string, tableName string) (string, error) {
|
|
db, err := ggorm.InitSqlite(dbFile)
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
defer closeDB(db)
|
|
|
|
var sql string
|
|
err = db.Raw("select sql from sqlite_master where type = ? and name = ?", "table", tableName).Scan(&sql).Error
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
//sql = handleID(sql)
|
|
for k, v := range sqliteToMysqlTypeMap {
|
|
sql = strings.ReplaceAll(sql, k, v)
|
|
}
|
|
|
|
return sql, nil
|
|
}
|
|
|
|
//func handleID(sql string) string {
|
|
// re := regexp.MustCompile(`id\s+INTEGER`)
|
|
// matches := re.FindAllStringSubmatch(sql, -1)
|
|
//
|
|
// for _, match := range matches {
|
|
// sql = strings.ReplaceAll(sql, match[0], " id bigint unsigned")
|
|
// }
|
|
//
|
|
// return sql
|
|
//}
|