思路
首先我们需要先将目标文件导出成csv格式,然后下载到指定目录,然后执行导入mysql语句将csv文件导入。

本例将展示将云数据导入到mysql的示例,以及导入过程中遇到的坑。

//将云端数据下载到本地
  func upload(url string) string {
  if url == "" {
    return ""
  }
  //先将读取的文件内容存到本地文件
  client := &http.Client{}
  Sugar.Info("4")
  reqest, err := http.NewRequest("GET", url, nil)
  reqest.Header.Add("Content-Type", "application/octet-stream")

  if err != nil {
      Sugar.Error(err, "返回结果失败")

  }
  //处理返回结果
  resp, err := client.Do(reqest)
  if err != nil {
      Sugar.Error(err, "处理返回结果")

  }
defer resp.Body.Close()
//fmt.Println(resp)
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
    Sugar.Error(err, "读取失败")
}
err = ioutil.WriteFile("data.csv", body, 0644)
if err != nil {
    Sugar.Error(err, "存储失败")
}
return "yes"
 }

这时我们已将把数据下栽到了本地,接下来我们需要将数据上传至mysql

local:本地数据
'/usr/local/data.csv':是文件的路径
CHARACTER SET utf8mb4:设置字符集为utf8mb4
fields terminated by ',':字段与字段之间用“,”相隔,
lines terminated by 'n':每行已n作为结束的标志
ignore 1 lines;`:无视第一行数据,因为第一行是字段,而不是具体的数据
特别注意字符集是非常重要的,当你数据中存在一些非utf8的数据时会导入失败,我们需要根据不同情况选择不同字符集

//在上传之前我们需要将所要上传的文件注册一下,否则不能够上传成功
mysql.RegisterLocalFile("/usr/local/data.csv")
//然后我们写sql语句,在此所用的包是"github.com/go-sql-driver/mysql"

sqls0 := `load data local infile '/usr/local/data.csv' into table totalnum CHARACTER SET utf8mb4 
fields terminated by ',' optionally enclosed by '"' escaped by '\"'  lines terminated by '\n' ignore 1 
lines;`

然后我们执行sql语句

    smt, err := db.Prepare(sqls0)
     if err != nil {
    Sugar.Error(err, "创建表预处理失败")

        }
    _, err = smt.Exec()
    if err != nil {
        Sugar.Error(err, "表中添加信息失败")
    } else {
        Sugar.Info("清空表数据")
        }

此时我们就可以将我们的云数据导入到我们的mysql表中了

Last modification:March 28th, 2020 at 03:53 pm
如果觉得我的文章对你有用,请随意赞赏