暂时的方法是将关系数据库(RDB)的所有记录导入到MongoDB(DocumentDB)中
※请点击这里查看原始博客。
由于MongoDB和RDB的基本理念不同,直接将RDB中的记录转移到MongoDB的情况很少见,我们应该考虑像DocumentDB那样的模式设计。然而,在考虑从RDB迁移到MongoDB等情况下,出现了“将RDB中的所有数据转移到MongoDB后,能否正确处理数据量?”和“我想暂时使用RDB数据作为测试数据”等需求。因此,我将本文发送给与我处境相似的人。
方法如下所示:
-
- 将从RDB中选择的结果以json文件的形式取出(在此过程中根据唯一键生成ID)
-
- 将JSON文件转换为MongoDB的insert语句
- 将其发送至MongoDB。
从RDB中选择的结果,以json文件形式提取出来。
本次我们假设以下员工名单进行操作。
-
- テーブル名 : employeeList
事業所ID : officeId(主キー)
従業員ID : employeeId(主キー)
苗字 : lastName
名前 : firstName
性別 : sex
年齢 : age
使用以下命令,从employeeList中以JSON格式获取所有记录。
-- 取得結果を書き込むファイルを宣言
\o employee_list.json
-- 全件取得結果をJSONで取り出す
WITH trimedEmployeeList AS (
SELECT
officeId || '_' || employeeId AS "_id",
*
FROM employeeList
)
SELECT to_json(trimedEmployeeList) from trimedEmployeeList;
-- 終了
\q
在这种情况下,我将RDB的主键使用字符串连接并转换为MongoDB的id。
如果没有指定id,MongoDB会自动发行一个唯一的对象ID,因此没有也没有问题。
将JSON文件转换为MongoDB的插入语句。
一旦生成JSON文件,将其内容巧妙地转换为MongoDB的插入语句。
我主要做了以下事情。
-
- RDBのカラム名削除
-
- カラムとレコードの境の線削除
-
- JSONの最後の}を},に変換(コンマを付けた)
- JSONを以下で囲む
db.employeeList.insertMany([ ここにJSON ])
請根據您的喜好,更改employeeList部分以符合MongoDB的集合名。
将数据发送给MongoDB。
如果使用命令行界面运行在上述中创建的MongoDB插入语句,就完成了!
我想您可以把将大家都熟悉的关系数据库(RDB)的记录放入MongoDB,就像这样变成一个模仿的样品,我认为这也可以作为一个选项供您使用。
再次强调,当决定使用MongoDB时,我们需要重新进行模式设计。