背景
甲方没有生产环境数据,需要自己做出模拟数据实现业务,无奈只能手动生成数据。
main.go
package main
import (
"encoding/csv"
"log"
"math/rand"
"os"
"strconv"
)
func main() {
fName := "test.csv"
file, err := os.Create(fName)
if err != nil {
log.Fatalf("Cannot create file %q: %s\n", fName, err)
return
}
defer file.Close()
// 写入UTF-8 BOM,防止中文乱码
file.WriteString("\xEF\xBB\xBF")
writer := csv.NewWriter(file)
defer writer.Flush()
// 导入模板顺序
header := []string{"序号", "日期", "客户名", "提气点", "卸货地", "省份归属", "承运商", "车牌号", "挂车号", "实际装车量(t)", "贸易方式", "省", "市"}
// 日期数据
date := []string{"2021-01-01", "2021-02-01", "2021-03-1", "2021-04-01", "2021-05-01", "2021-06-01", "2021-07-01", "2021-08-01", "2021-09-1", "2021-10-01", "2021-11-01", "2021-12-01"}
// 省级区域数据
province := []string{"北京", "天津", "上海", "重庆", "河北", "山西", "辽宁", "吉林", "黑龙江", "江苏", "浙江", "安徽", "福建", "江西", "山东", "河南", "湖北", "湖南", "广东", "海南", "四川", "贵州", "云南", "陕西", "甘肃", "青海", "台湾", "内蒙古自治区", "广西壮族自治区", "西藏自治区", "宁夏回族自治区", "新疆维吾尔自治区", "香港特别行政区", "澳门特别行政区"}
// 广东省市级区域数据
city := []string{"广州市", "深圳市", "佛山市", "东莞市", "中山市", "珠海市", "江门市", "肇庆市", "惠州市", "汕头市", "潮州市", "揭阳市", "汕尾市", "湛江市", "茂名市", "阳江市", "云浮市", "韶关市", "清远市", "梅州市", "河源市"}
traceWay := []string{"DES", "FOB"}
// Write CSV header
writer.Write(header)
// Write CSV body
for i := 0; i < 5000; i++ {
p := province[rand.Intn(len(province))]
c := ""
if p == "广东" {
c = city[rand.Intn(len(city))]
}
no := strconv.Itoa(rand.Intn(25))
n := strconv.Itoa(rand.Intn(4))
writer.Write([]string{"1", date[rand.Intn(len(date))], "客户名" + no, "提气点" + n, "卸货地" + no, p, "承运商" + no, "车牌号" + no, "挂车号" + no, "20.01", traceWay[rand.Intn(len(traceWay))], p, c})
}
// result
log.Printf("done, check file %q for results\n", fName)
}
测试
调用业务接口导入模拟数据文件:
数据库导入情况:
ok,现在有数据可以进行业务实现了。