如何将App Engine数据存储区中的数据存储到csv文件中?

时间:2018-08-17 18:44:27

标签: google-app-engine go datastore

我需要将从数据存储区查询的值列表存储到csv文件中

这是我正在尝试的代码

//WriteCsvFileHandler is to
func WriteCsvFileHandler(w http.ResponseWriter, r *http.Request, ps httprouter.Params) {
    kinDiagnosisList := []Diagnosis{}
    context := appengine.NewContext(r)

    //Getting Namespace
    namespace := ps.ByName("namespace")
    ctx, err := appengine.Namespace(context, namespace)
    if err != nil {
        log.Infof(ctx, "Namespace error from GetAllDiagnosisForEncounterHandler")
        RespondErr(w, r, http.StatusInternalServerError, err.Error())
        return
    }
    file, err := os.Create("result.csv")
    checkError("Cannot create file", err)
    defer file.Close()

    writer := csv.NewWriter(file)
    defer writer.Flush()

    q := datastore.NewQuery("Diagnosis")
    data, err := q.GetAll(ctx, &kinDiagnosisList)
    if err != nil {
        log.Infof(ctx, "Keys generation error from GetAllDiagnosisForEncounterHandler")
        RespondErr(w, r, http.StatusInternalServerError, err.Error())
        return
    }

    for _, value := range  {
        err := writer.Write(value)
        checkError("Cannot write to file", err)
    }
}

func checkError(message string, err error) {
    if err != nil {
        log.Fatal(message, err)
    }
}

如何将来自数据存储的诊断列表存储到csv文件中?

1 个答案:

答案 0 :(得分:0)

您遇到错误吗?

您需要能够输出多少个实体?

可靠的答案是使用Google Dataflow,但您必须用Java或python编写该作业。

否则,如果您需要较少涉及的解决方案,则必须在处理程序提供文件之前在内存中构建文件。如果请求超时是您的问题,则可以通过Google TaskQueue调用该处理程序,以使超时最多增加10分钟,并将文件写入Google Cloud Storage。