如何将数据从MySQL/MongoDB中迁移至云开发数据库
云开发数据库
迁移说明
从 MySQL、MongoDB 将数据库导出为 JSON 或 CSV 格式
创建一个云开发环境
到云开发数据库新建一个集合
在集合内导入 JSON 或 CSV 格式文件
导出为 CSV 格式
导出为 JSON 格式
导出为 CSV 格式
mongoexport -d
导出为 JSON 格式
mongoexport -d 数据库 -c 集合名称 -o 输出路径\输出名字.json
参数 | 全称 | 参考解释 |
---|---|---|
-d | --db <database> | 指定数据库名称 |
-c | --collection <collection> | 指定需要导出的集合 |
-o | --out <file> | 指定要导出的文件路径(含文件名) |
导入
新建云环境
数据库导入
注:这里有两种冲突处理模式: Insert 和 Upsert \\Insert:Insert 模式会在导入时总是插入新记录,同一文件不能存在重复的 _id 字段,或与数据库已有记录相同的 _id 字段。 \\Upsert:Upsert 模式会判断有无该条记录,如果有则更新该条记录,否则就插入一条新记录。
数据库测试
安装 cloudbase/cli
npm i -g @cloudbase/cli
云开发项目初始化
tcb init
√ 选择关联环境 · 环境名称 - [环境ID:空]
√ 请输入项目名称 · cloudbase-demo
√ 创建项目 cloudbase-demo 成功!
编写测试数据库代码
const tcb = require('tcb-admin-node')
tcb.init({
env: tcb.getCurrentEnv()
})
const db = tcb.database()
exports.main = async (event) => {
return db.collection('db_remove').get()
}
npm i --save tcb-admin-node@latest
本地运行云函数
tcb functions:run --name app
可能发生的问题
1.secure_file_priv 的 Value 为 Null;
[Code: 1290, SQL State: HY000] The MySQL server is running with the –secure-file-priv option so it cannot execute this statement
2.JSON 数据不是数组,而是类似 JSON Lines,即各个记录对象之间使用 \n 分隔,而非逗号;
{
"user":"aaa",
"pwd":43
}
{
"user":"root",
"pwd":8
}
{
"user":"aaa",
"pwd":43
},
{
"user":"root",
"pwd":8
}
注:像上面例子这样的没有 json 嵌套可以直接采用替换的方式进行将每条数据之间逗号去除,将 },换行{ 替换为 }换行{ 。如果有 json 嵌套可以采用正则的方式进行去除。 我们可以将 json 用数组 ([ ]) 包起来,遍历这个数组,对于每一项使用正则 },$ 匹配到每一项最后的逗号,将其替换为 } 。这样就解决了 }, => } 在有 json 嵌套的去掉每条数据之间逗号。
☁
更多精彩
扫描二维码了解更多
△容器化的Serverless=Faas+Caas+Baas
点击在看让更多人发现精彩