为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 Golang 实现导入数据功能?

如何使用 Golang 实现导入数据功能?

Go
犯罪嫌疑人X 2023-04-17 16:26:21
我有 2 种方法,分别用于GET和POST。第一个是: var Join map[string]intfunc MapTheFields(c *gin.Context) { var data []string //Open the csv file csvFile, _ := os.Open("customers.csv") reader := csv.NewReader(csvFile) line, _ := reader.ReadAll() for i := 0; i < len(line[0]); i++ {     Join = map[string]int{         line[0][i]: i,     }     data = append(data, line[0][i]) } GetSuccessResponse(c, "The Mappings are:", data) }第二个也和第一个类似。它只是将值保存到数据库中。我一直面临的问题是,我必须将从 csv 文件中获取的字段映射到我的项目中的字段,为此我制作了一个如上所示命名的地图,并且我正在访问 line in 的Join值第二个函数作为line[i][Join["Last Name"]]Join["Last Name"]但是我得到了as的值,0即使它的值为1,并且无论我在哪里使用连接作为索引,该值都是零,而且我总是只得到前 4 个值,然后是索引越界错误。休息代码是:func ImportCustomerData(c *gin.Context) {//Open the csv filecsvFile, _ := os.Open("customers.csv")reader := csv.NewReader(csvFile)var (    user      models.User    customer  models.Customer    address   models.UserAddress    addresses []models.UserAddress    people    []models.Customer    users     []models.User)line, _ := reader.ReadAll()for i := 1; i < len(line[0]); i++ {    //Initialize address details    address.Address = line[i][Join["address"]]    address.City = line[i][Join["City"]]    address.State = line[i][Join["State"]]    address.Zipcode = line[i][Join["Postal Code"]]    savedAddress := SaveNewAddress(address, merchantDb)    //Initalize user details    user.FirstName = line[i][Join["First Name"]]    user.LastName = line[i][Join["Last Name"]]    user.CompanyName = line[i][Join["Company Name"]]    user.EmailId = line[i][Join["Email"]]    user.PhoneNumber = line[i][Join["Phone"]]  }}
查看完整描述

1 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

您每次都在分配一张新地图MapTheFields():


 for i := 0; i < len(line[0]); i++ {

     Join = map[string]int{

         line[0][i]: i,

     }

     data = append(data, line[0][i])

 }

Join类型的映射,应该首先分配,像这样声明 Join :


Join = make(map[string]int) //declaration can be global

MapTheFields()用这个替换代码片段:


 for i := 0; i < len(line[0]); i++ {

     Join[line[0][i]] = i

     data = append(data, line[0][i])

 }


查看完整回答
反对 回复 2023-04-17
  • 1 回答
  • 0 关注
  • 66 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信