- 读取多文件夹,可以开启多个协程
var wg sync.WaitGroup
for index, dir := range Dirs {
wg.Add(1)
go readDir(dir)
}
wg.Wait()
遍历csv数据,拼接insert into,少量数据看不出啥问题,大量数据就有点残废了,10w数据耗时5min,经优化批量插入,耗时竟3s!!!看到差距了吧
当数据达到百万级别,就有点崩溃了
wsarecv: an existing connection was forcibly closed by the remote host
继续优化吧!
拆分数据分批导入,10w一个批次,1000w耗时3min,结果还能接受
var values []string
for i := 0; i <= len(list); i++ {
start := i * 100000
end := (i + 1) * 100000
if mod == 0 && i == len(list){
break
}
if i == len(list){
values = append(list[start:])
} else {
values = append(list[start:end])
}
result, err := tx.Exec(sqlCmd + fmt.Sprintf("values %s", strings.Join(values, ",")+";"))
if err != nil {
return err
}
}
再大数量级,待后续!
如果有什么建议,评论区见!