diff --git a/go.mod b/go.mod index d7f1c596..344c8cd8 100644 --- a/go.mod +++ b/go.mod @@ -40,6 +40,7 @@ require ( github.com/go-sql-driver/mysql v1.6.0 // indirect github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect github.com/golang/protobuf v1.5.2 // indirect + github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 // indirect github.com/hashicorp/go-hclog v1.2.0 // indirect github.com/hashicorp/go-plugin v1.4.4 // indirect diff --git a/go.sum b/go.sum index e772ca39..bcd66b44 100644 --- a/go.sum +++ b/go.sum @@ -190,6 +190,8 @@ github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= diff --git a/importer/importer.go b/importer/importer.go index 6cdf1fce..5dca3bf0 100644 --- a/importer/importer.go +++ b/importer/importer.go @@ -7,6 +7,7 @@ import ( "sort" "strings" + "github.com/google/uuid" jsoniter "github.com/json-iterator/go" "github.com/yaoapp/gou" "github.com/yaoapp/kun/any" @@ -387,14 +388,17 @@ func (imp *Importer) Run(src from.Source, mapping *Mapping) interface{} { mapping = imp.AutoMapping(src) } + id := uuid.NewString() + page := 0 total := 0 failed := 0 ignore := 0 imp.Chunk(src, mapping, func(line int, data [][]interface{}) { + page++ length := len(data) total = total + length columns, data := imp.DataClean(data, mapping.Columns) - process, err := gou.ProcessOf(imp.Process, columns, data) + process, err := gou.ProcessOf(imp.Process, columns, data, id, page) if err != nil { failed = failed + length log.With(log.F{"line": line}).Error("导入失败: %s", err.Error())