bug fixed & new Import func
This commit is contained in:
parent
66e697d3b1
commit
bfeb6ea19f
27
engine.go
27
engine.go
|
@ -31,6 +31,7 @@ type Engine struct {
|
||||||
mutex *sync.RWMutex
|
mutex *sync.RWMutex
|
||||||
Cacher core.Cacher
|
Cacher core.Cacher
|
||||||
|
|
||||||
|
ShowInfo bool
|
||||||
ShowSQL bool
|
ShowSQL bool
|
||||||
ShowErr bool
|
ShowErr bool
|
||||||
ShowDebug bool
|
ShowDebug bool
|
||||||
|
@ -190,7 +191,9 @@ func (engine *Engine) LogError(contents ...interface{}) {
|
||||||
|
|
||||||
// logging error
|
// logging error
|
||||||
func (engine *Engine) LogInfo(contents ...interface{}) {
|
func (engine *Engine) LogInfo(contents ...interface{}) {
|
||||||
|
if engine.ShowInfo {
|
||||||
engine.Logger.Info(fmt.Sprintln(contents...))
|
engine.Logger.Info(fmt.Sprintln(contents...))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// logging debug
|
// logging debug
|
||||||
|
@ -325,10 +328,19 @@ func (engine *Engine) DumpAll(w io.Writer) error {
|
||||||
} else if col.SQLType.IsText() || col.SQLType.IsTime() {
|
} else if col.SQLType.IsText() || col.SQLType.IsTime() {
|
||||||
var v = fmt.Sprintf("%s", d)
|
var v = fmt.Sprintf("%s", d)
|
||||||
temp += ", '" + strings.Replace(v, "'", "''", -1) + "'"
|
temp += ", '" + strings.Replace(v, "'", "''", -1) + "'"
|
||||||
} else if col.SQLType.IsBlob() /*reflect.TypeOf(d).Kind() == reflect.Slice*/ {
|
} else if col.SQLType.IsBlob() /**/ {
|
||||||
|
if reflect.TypeOf(d).Kind() == reflect.Slice {
|
||||||
temp += fmt.Sprintf(", %s", engine.dialect.FormatBytes(d.([]byte)))
|
temp += fmt.Sprintf(", %s", engine.dialect.FormatBytes(d.([]byte)))
|
||||||
|
} else if reflect.TypeOf(d).Kind() == reflect.String {
|
||||||
|
temp += fmt.Sprintf(", '%s'", d.(string))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
temp += fmt.Sprintf(", %s", d)
|
s := fmt.Sprintf("%v", d)
|
||||||
|
if strings.Contains(s, ":") || strings.Contains(s, "-") {
|
||||||
|
temp += fmt.Sprintf(", '%s'", s)
|
||||||
|
} else {
|
||||||
|
temp += fmt.Sprintf(", %s", s)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_, err = io.WriteString(w, temp[2:]+");\n\n")
|
_, err = io.WriteString(w, temp[2:]+");\n\n")
|
||||||
|
@ -1160,17 +1172,20 @@ func (engine *Engine) Count(bean interface{}) (int64, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Import SQL DDL file
|
// Import SQL DDL file
|
||||||
func (engine *Engine) Import(ddlPath string) ([]sql.Result, error) {
|
func (engine *Engine) ImportFile(ddlPath string) ([]sql.Result, error) {
|
||||||
|
|
||||||
file, err := os.Open(ddlPath)
|
file, err := os.Open(ddlPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
return engine.Import(file)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Import SQL DDL file
|
||||||
|
func (engine *Engine) Import(r io.Reader) ([]sql.Result, error) {
|
||||||
var results []sql.Result
|
var results []sql.Result
|
||||||
var lastError error
|
var lastError error
|
||||||
scanner := bufio.NewScanner(file)
|
scanner := bufio.NewScanner(r)
|
||||||
|
|
||||||
semiColSpliter := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
|
semiColSpliter := func(data []byte, atEOF bool) (advance int, token []byte, err error) {
|
||||||
if atEOF && len(data) == 0 {
|
if atEOF && len(data) == 0 {
|
||||||
|
@ -1191,7 +1206,7 @@ func (engine *Engine) Import(ddlPath string) ([]sql.Result, error) {
|
||||||
|
|
||||||
session := engine.NewSession()
|
session := engine.NewSession()
|
||||||
defer session.Close()
|
defer session.Close()
|
||||||
err = session.newDb()
|
err := session.newDb()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return results, err
|
return results, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package xorm
|
package xorm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
@ -120,6 +121,11 @@ func (db *sqlite3) GetColumns(tableName string) ([]string, map[string]*core.Colu
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
if name == "" {
|
||||||
|
return nil, nil, errors.New("no table named " + tableName)
|
||||||
}
|
}
|
||||||
|
|
||||||
nStart := strings.Index(name, "(")
|
nStart := strings.Index(name, "(")
|
||||||
|
|
Loading…
Reference in New Issue