小程序云开发数据导入总结

起因:之前用即时应用做了一个小程序,产生了上千条的应用数据(以csv文件导出),现在即时应用即将要收费,于是把小程序用云开发重写了后台数据库,所以就有了这次的数据迁移,即将上千条的csv文件数据导入到小程序的云开发数据库(以下简称云数据库)。

一、云数据导入导读

云开发支持从文件导入已有的数据。目前仅支持导入 CSV、JSON 格式的文件数据。有云开发控制台和HTTP API两种导入方式。在此只介绍下使用云开发控制台导入数据。

使用云开发控制台导入

要导入数据,需打开云开发控制台,切换到 “数据库” 标签页,并选择要导入数据的集合,点击 “导入” 按钮。

数据库

选择要导入的 CSV 或者 JSON 文件,以及冲突处理模式,点击 “导入” 按钮即可开始导入。

文件格式

JSON、CSV 文件必须是 UTF-8 的编码格式,且其内容类似 MongoDB 的导出格式,例如:

JSON:

{
    "_id": "xxxxxx",
    "age": 45
}

{
    "_id": "yyyyyy",
    "age": 21
}

CSV:

_id,age
xxxxxx,45
yyyyyy,21

需要注意以下几点:

1、JSON 数据不是数组,而是类似 JSON Lines,即各个记录对象之间使用 \n 分隔,而非逗号;

2、JSON 数据每个键值对的键名首尾不能是 .,例如 ".a""abc.",且不能包含多个连续的 .,例如 "a..b"

3、键名不能重复,且不能有歧义,例如 {"a": 1, "a": 2}{"a": {"b": 1}, "a.b": 2}

4、时间格式须为 ISODate 格式,例如 "date": { "$date" : "2018-08-31T17:30:00.882Z" }

5、当使用 Insert 冲突处理模式时,同一文件不能存在重复的 _id 字段,或与数据库已有记录相同的 _id 字段;

6、CSV 格式的数据默认以第一行作为导入后的所有键名,余下的每一行则是与首行键名一一对应的键值记录。

目前提供了 Insert、Upsert 两种冲突处理模式。Insert 模式会在导入时总是插入新记录,Upsert 则会判断有无该条记录,如果有则更新记录,否则就插入一条新记录。

导入完成后,可以在提示信息中看到本次导入记录的情况。

数据库

二、准备工作

  1. 直接将csv数据导入到云数据库,文件导入报错,导入内容乱码。因此需要将csv文件转成json格式。
  2. 在线csv转json工具json-csv.com 或者col2json

3.对转换结果进行校验 Json在线校验工具

三、对校验结果进行修正,

参考 JSON Lines的示例,检查各个json数组是否正确

{
  "name": "Gilbert", 
  "wins": [
    [
      "straight", 
      "7♣"
    ], 
    [
      "one pair", 
      "10♥"
    ]
  ]
}
{
  "name": "Alexa", 
  "wins": [
    [
      "two pair", 
      "4♠"
    ], 
    [
      "two pair", 
      "9♠"
    ]
  ]
}

四、导入时遇到的问题列表

导入数据库失败, Error: Poll error, 
导入数据任务(id:339958)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character '-' after object key:value pair


导入数据库失败, Error: Poll error, 
导入数据任务(id:340089)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character '\r' in string literal


导入数据库失败, Error: Poll error, 
导入数据任务(id:340090)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character '\t' in string literal

导入数据库失败, Error: Poll error, 
导入数据任务(id:340108)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character 'è' looking for beginning of value

导入数据库失败, Error: Poll error, 
导入数据任务(id:340118)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character 'ç' looking for beginning of value

导入数据库失败, Error: Poll error, 
导入数据任务(id:340125)异常,
错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character '6' after object key:value pair


导入数据库失败, Error: Poll error, 
导入数据任务(id:340133)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character ',' looking for beginning of value

导入数据库失败, Error: Poll error, 
导入数据任务(id:340140)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character 'å' after object key:value pair

导入数据库失败, Error: Poll error, 
导入数据任务(id:340169)异常,错误信息:解析json文档错误,请检查导入文件格式,
错误详情如下:invalid character 'c' in literal ObjectId (expecting 'b')

五、导入错误查看步骤

image.png

看到这个错误时,刷新下数据库记录,查看下最后一条导入数据的id。


数据库记录

然后导入文件中查找id对应记录之后的那条记录即可。如下结构中就存在telphone存在‘-’非法字符。

"age": 22,
"telphone": 185-3000-9790,

六、总结

小程序云开发提供了免费的数据库使用,但数据库操作上存在很多不好用的地方,比如没有批量删除即可与其记录的功能,比如导入的容错性太低,比如导入报错时,错误提示不明确,如作者遇到的导入数据任务(id:340125)异常,这个id是什么鬼?
因此需要大家仔细校验数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 14,736评论 0 15
  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 12,069评论 0 34
  • d3二班的战友们大家好,真不好意思化妆的时间有点太长了,这么关键的一个开班仪式,我居然掉链子了。这说明什么呢,说明...
    Hanna阅读 2,784评论 1 1
  • 神奇的经历——初遇 14岁那年盛夏,无聊的翻看QQ空间,不知道是第几次看见‘王俊凯’这个名字了,不得不说,这是一个...
    薇来坷苡阅读 2,548评论 0 0