如何以任何格式保存以 mongodb 中写入 csv 文件的用户数据?



>假设有一个csv文件的格式如下:-

第一个文件

firstname|lastname|Email| other fields
|        |     |
|        |     |
|        |     |
|        |     |

第二个文件:-

email|firstname|lastname|other fields
|         |        |
|         |        |
|         |        |
|         |        |

第三个文件

lastname|firstname|email|other fields     
|         |     |
|         |     |
|         |     |
|         |     |

所以我想将这三个文件分别保存在mongodb数据库中。在以下给定的格式中:

格式first_name, last_name,email, otherfield

我正在使用的代码:-

package main
import (
"encoding/csv"
"gopkg.in/mgo.v2"
"io"
"log"
"os"
)
type Mongo struct {
// Id          int    `json:"_id" bson:"_id"`
FirstName   string `json:"first_name,omitempty" bson:"first_name,omitempty"`
LastName    string `json:"last_name,omitempty" bson:"last_name,omitempty"`
Email       string `json:"email,omitempty" bson:"email,omitempty"`
PhoneNumber string `json:"phone_number,omitempty" bson:"phone_number,omitempty"`
Gender      string `json:"gender,omitempty" bson:"gender,omitempty"`
Address     string `json:"address,omitempty" bson:"address,omitempty"`
Apartment   string `json:"apartment,omitempty" bson:"apartment,omitempty"`
Description string `json:"description,omitempty" bson:"description,omitempty"`
}
func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
defer session.Close()
session.SetMode(mgo.Monotonic, true)
c := session.DB("Import_Users").C("users")
file, err := os.Open("customers.csv")
if err != nil {
panic(err)
}
defer file.Close()
reader := csv.NewReader(file)
for {
record, err := reader.Read()
if err == io.EOF {
break
} else if err != nil {
panic(err)
}
err = c.Insert(&Mongo{record[0], record[1], record[2], record[3], record[4], record[5], record[6], record[7]})
if err != nil {
panic(err)
}
log.Printf("%#v", record)
}
}

我使用的代码将数据保存在mongodb中很简单,但它不会格式化我需要保存的数据

我怎样才能实现我的目标?

我认为您可以使用反射将csv的每一行映射到结构上。类似于 json 编码包的事情正在从字符串到结构。然后可以将该结构插入到mongodb中。

你想要这样的东西吗? https://play.golang.org/p/hg3K-u8l9mx

你需要对它进行更多的保护,你可以对它进行很多速度改进,但这就像json pkg的Unmarshhal。

最新更新