MongoDb导出数据为MSSQL语句

const params = {
    connection: "ip地址",
    db: "数据库名称",
    type: "sql",
    batchSize: 2000,
    exportCollections: [
        {
            collection: "table",
            fields: [
                {
                    sourceField: "_id",//MongoDb中的原字段
                    targetField: "MongoDBId",//导出至sql中的字段
                    dataType: "VARCHAR(255)",//类型
                    bsonType: "ObjectId",
                    nullable: false
                },
                {
                    sourceField: "Name",
                    targetField: "SqlName",
                    dataType: "VARCHAR(255)",
                    bsonType: "String",
                    nullable: true
                }
            ],
            table: "#MongoTmp",//导出至sql中的表名称
            filepath: "导出文件的路径.sql",
            dialect: "MSSQL",
            withTableStructure: false
        }
    ]
};
mb.exportCollections(params);
sleep(100);
mb.openFolder(require("path").dirname(params.exportCollections[0].filepath));

如超过1000条无法直接全部导出,则新建一个临时表,分批将临时表的数据插入到临时表中,再进行导出,导出条件通过_id进行筛选。

// 获取1000条数据插入到临时表中
db.table.find({})
   .sort({_id:-1})
   .limit(1000)
   .skip(1000)
   .forEach(
      function(doc){
		db.tempTable.insertOne({"_id":doc._id,"Name":doc.Name})
      }
    )

// 导出至sql
...

// 删除
db.getSiblingDB("dbName").getCollection("tempTable").deleteMany({});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值