当前位置: > > > > 将 CSV 解组为结构,然后导入
将 CSV 解组为结构,然后导入
来源:stackoverflow
2024-04-28 19:18:32
0浏览
收藏
Golang不知道大家是否熟悉?今天我将给大家介绍《将 CSV 解组为结构,然后导入》,这篇文章主要会讲到等等知识点,如果你在看完本篇文章后,有更好的建议或者发现哪里有问题,希望大家都能积极评论指出,谢谢!希望我们能一起加油进步!
问题内容
我正在尝试学习 go。 我正在努力将 csv 记录解组到结构中,以便我可以创建插入并将这些数据导入到我的数据库中。
我正在寻找一种自动化编组的方法,其方式与编码类似
当我运行 main 时,我收到错误
panic: strconv.parseint: parsing "id": invalid syntax
我已经编写了一些代码,应该将我的 .csv 记录解组为结构
func unmarshal(reader *csv.reader, v interface{}) error {
record, err := reader.read()
if err != nil {
return err
}
s := reflect.valueof(v).elem()
if s.numfield() != len(record) {
return &fieldmismatch{s.numfield(), len(record)}
}
for i := 0; i < s.numfield(); i++ {
f := s.field(i)
switch f.type().string() {
case "string":
f.setstring(record[i])
case "int":
ival, err := strconv.parseint(record[i], 10, 0)
if err != nil {
return err
}
f.setint(ival)
default:
return &unsupportedtype{f.type().string()}
}
}
return nil
}
我在另一个文件中创建了这个结构:
type inserttodatabase struct {
id int `csv:"id"`
groupid int `csv:"group_id"`
name string `csv:"name"`
status int `csv:"status"`
}
当 main 运行时,它应该运行这段代码,然后解析我的 .csv 文件以创建插入,然后在我的本地数据库上运行。
var InsertTest InsertToDatabase
reader := csv.NewReader(file)
for {
err := Unmarshal(reader, &InsertTest)
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
channel <- InsertTest
}
}
有没有办法提高这段代码的可读性?另外,我应该循环并调用 .read 一次处理一行吗?
解决方案
当我运行 main 时,我收到错误
恐慌:strconv.ParseInt:解析“id”:语法无效
我猜您是无意中解析了 CSV 文件的标题行。
本篇关于《将 CSV 解组为结构,然后导入》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注米云公众号!
