使用node对mysql进行数据循环插入

问题:

用for循环插入的话会导致插入顺序不一样,比如下图:

在这里插入图片描述

查找资料 :

查看了官方文档人家是这么写的,使用.query有三种方式:
1.最简单的 .query()形式是 .query(sqlString, callback),第一个参数是一条SQL字符串,第二个参数是回调:

connection.query('SELECT * FROM `books` WHERE `author` = "David"', function (error, results, fields) {
  // error will be an Error if one occurred during the query
  // results will contain the results of the query
  // fields will contain information about the returned results fields (if any)
});

2.query()形式是 .query(sqlString, values, callback),带有值的占位符 (查看转义查询值):

connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) {
  // error will be an Error if one occurred during the query
  // results will contain the results of the query
  // fields will contain information about the returned results fields (if any)
});

3.query()形式是 .query(options, callback),在查询时带有大量的高级可选项

connection.query({
  sql: 'SELECT * FROM `books` WHERE `author` = ?',
  timeout: 40000, // 40s
  values: ['David']
}, function (error, results, fields) {
  // error will be an Error if one occurred during the query
  // results will contain the results of the query
  // fields will contain information about the returned results fields (if any)
});

解决 :

部分代码:
// 数据插入
		/* 我的data的参数是这样的是一个二维数组
			[	
				[1,2,3,4],
				[1,2,3,5555],
				[1,2,3,5555666]
			]
			下面还是得加上[data] 变成三维数组
		*/
    let DataInsert = async (data)=>{
        db.query('insert into DomesticOutbreak values ?',[data],(err,result)=>{
            if(err) return console.log(err);
            console.log(`数据插入成功~`);
        });
    };
全部代码:
// 爬取国内数据疫情数据汇总到DomesticOutbreak表中
exports.CraDomesticOutbreak = async function(){
    // 清空当前插入的表
    let task = async ()=>{
        db.query('DELETE FROM DomesticOutbreak',(err,result)=>{
            if(err) return console.log(err);
            console.log(`清空成功~`);
        });
    };
    // 数据处理
    let DataFilter = async (data)=>{
        let arr = [] ;
        data.map(i=>{
            let aa = [];
            for(let [keys,values] of Object.entries(i)){
                aa.push(values);
            }
            arr.push(aa);
        });
        return arr;
    };
    // 数据插入
    let DataInsert = async (data)=>{
        db.query('insert into DomesticOutbreak values ?',[data],(err,result)=>{
            if(err) return console.log(err);
            console.log(`数据插入成功~`);
        });
    };

    await Operate_puppeteer.DomesticOutbreak().then(async (reject,resolve)=>{
        await task();
        await DataInsert(await  DataFilter(reject));
    });
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值