我已经创建了一些代码,这些代码应该循环遍历一个csv文件,然后从该文件创建插入,以插入到数据库中。 该代码有效,但是它试图插入csv文件的第一行。第一行恰好是标题行。例如:
ID,Name
1,'John'
我不希望代码读取第一行并尝试插入ID和Name,而是插入1和'John'。
如何跳过.csv文件的第一行以相应地插入我的实际数据?
这是我目前正在从事的工作:
type InsertTestThing struct {
ID int `csv:"id"`
Name string `csv:"name"`
}
func InsertTestFileLoader(filename string,channel chan InsertTestThing) {
defer close(channel)
file,err := os.Open(filename)
if err != nil {
panic(err)
}
defer file.Close()
var InsertTestNew InsertTestThing
reader := csv.NewReader(file)
for {
err := unmarshal.Unmarshal(reader,&InsertTestNew)
if err == io.EOF {
break
}
if err != nil {
panic(err)
}
channel <- InsertTestNew
}
}
func saveInsertTest(channel <-chan InsertTestThing,db *sql.DB) {
stmt,err := db.Prepare(`INSERT INTO InsertTest (id,name) VALUES (?,?);`)
if err != nil {
log.Fatal(err)
}
for InsertTestThing := range channel {
_,err := stmt.Exec(
InsertTestThing.DiscountID,InsertTestThing.CategoryGroupId,)
if err != nil {
log.Fatal(err)
}
}
}
func InsertTestInsert() {
db,_ := sql.Open(
"mysql","localhost")
channel := make(chan InsertTestThing)
go InsertTestFileLoader("InsertTest.csv",channel)
saveInsertTest(channel,db)
defer db.Close()