# 数据库导入

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

### 使用云开发控制台导入

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

![数据库](https://res8.wxqcloud.qq.com.cn/wxdoc/36c59e4c-23de-4f96-b2d4-1a7317be94d3.jpg)

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

### 使用 HTTP API 导入

详情参考[HTTP API 数据库导入](/minigame/dev/wxcloud/reference-http-api/database/databaseMigrateImport)文档

## 文件格式

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

JSON：

```json
{
    "_id": "xxxxxx",
    "age": 45
}
```
```json
{
    "_id": "yyyyyy",
    "age": 21
}
```

CSV：
```
_id,age
xxxxxx,45
yyyyyy,21
```

需要注意以下几点：

1、JSON 数据不是数组，而是类似 [JSON Lines](http://jsonlines.org/examples/)，即各个记录对象之间使用 `\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 则会判断有无该条记录，如果有则更新记录，否则就插入一条新记录。

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

![数据库](https://res8.wxqcloud.qq.com.cn/wxdoc/037f756e-d056-40b6-81c2-b455657e2107.jpg)
