mirror of
https://github.com/zhufuyi/sponge.git
synced 2025-10-05 08:46:57 +08:00
43 lines
974 B
Go
43 lines
974 B
Go
package parser
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/zhufuyi/sponge/pkg/ggorm"
|
|
)
|
|
|
|
var sqliteToMysqlTypeMap = map[string]string{
|
|
" INTEGER ": " INT ",
|
|
" REAL ": " FLOAT ",
|
|
" BOOLEAN ": " TINYINT ",
|
|
" NUMERIC ": " VARCHAR(255) ",
|
|
"AUTOINCREMENT": "auto_increment",
|
|
" integer ": " INT ",
|
|
" real ": " FLOAT ",
|
|
" boolean ": " TINYINT ",
|
|
" numeric ": " VARCHAR(255) ",
|
|
"autoincrement": "auto_increment",
|
|
}
|
|
|
|
// 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
|
|
}
|
|
|
|
for k, v := range sqliteToMysqlTypeMap {
|
|
sql = strings.ReplaceAll(sql, k, v)
|
|
}
|
|
sql = strings.ReplaceAll(sql, "\"", "")
|
|
|
|
return sql, nil
|
|
}
|