diff --git a/biz/export/csv_exporter.go b/biz/export/csv_exporter.go index 4ab1756..f58e0aa 100644 --- a/biz/export/csv_exporter.go +++ b/biz/export/csv_exporter.go @@ -36,33 +36,38 @@ func (ee *CsvExporter) WaitGroup(wg *sync.WaitGroup) { } func (ee *CsvExporter) Export(sql, pk string) error { + begin := time.Now() data, err := ee.mFetcher.Fetch(sql) if err != nil { return fmt.Errorf("数据获取错误:%w", err) } - ee.count = len(data.Data) - //fmt.Printf("Excel Exporter.Excel, got %v data\n", len(data)) - go func() { - begin := time.Now() - ee.file.Open() - ee.file.WriteTitle(data.Title) + log.Printf("数据获取耗时:%s \n", time.Now().Sub(begin).String()) - for _, val := range data.Data { - row := val - ee.file.Write(row) - } - ee.file.Close() - ee.wg.Done() - end := time.Now() - log.Println("csv time:%s", end.Sub(begin).String()) - }() + ee.count = len(data.Data) if ee.count > 0 { + //异步导出数据到csv文件中 + go ee.exportToCsv(data) last := data.Data[ee.count-1] ee.last = last[ee.getPkIndex(data.Title, pk)] } return nil } +func (ee *CsvExporter) exportToCsv(data *Data) { + begin := time.Now() + ee.file.Open() + ee.file.WriteTitle(data.Title) + + for _, val := range data.Data { + row := val + ee.file.Write(row) + } + ee.file.Close() + ee.wg.Done() + end := time.Now() + log.Printf("csv time:%s\n", end.Sub(begin).String()) +} + func (ee *CsvExporter) Last() (int, interface{}) { return ee.count, ee.last }