暂时的方法是将关系数据库(RDB)的所有记录导入到MongoDB(DocumentDB)中

※请点击这里查看原始博客。

由于MongoDB和RDB的基本理念不同,直接将RDB中的记录转移到MongoDB的情况很少见,我们应该考虑像DocumentDB那样的模式设计。然而,在考虑从RDB迁移到MongoDB等情况下,出现了“将RDB中的所有数据转移到MongoDB后,能否正确处理数据量?”和“我想暂时使用RDB数据作为测试数据”等需求。因此,我将本文发送给与我处境相似的人。

方法如下所示:

    1. 将从RDB中选择的结果以json文件的形式取出(在此过程中根据唯一键生成ID)

 

    1. 将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时,我们需要重新进行模式设计。

bannerAds