首页 > 数据库 >nodejs 使用 sequelize 实现 mysql数据库的批量插入

nodejs 使用 sequelize 实现 mysql数据库的批量插入

时间:2024-08-01 11:29:00浏览次数:12  
标签:const nodejs my batchSize mysql model sequelize

直接上代码:

 /**
   * 设置mysql连接,返回连接实例。 连接格式:账户:密码@数据库地址/具体数据库名称
   * 
   **/
 const setConnect=()=>{
    const sequelize = new Sequelize(
      `mysql://${你的mysql地址 }`,
      {
        logging: (...msg) => Logger.INSTANCE.info(...msg),
        timezone: "+08:00",
      }
    );
    return sequelize
 }
 
 /**
  * 构建实例
  **/
 build_my_model() {
    const sequelize =setConnect()
    const my_model = sequelize.define(
      "my_table,表名",
      {
        id: {
          type: DataTypes.INTEGER,
          primaryKey: true,
          autoIncrement: true,
        },
        name: {
          type: DataTypes.INTEGER,
        },
        age: {
          type: DataTypes.INTEGER,
        }
      },
      {
        freezeTableName: true, // 禁用表名复数化
        timestamps: false, // 禁用 createdAt 和 updatedAt 字段
      }
    );
    return my_model;
  }
    
  /**
   * 批量插入方法
   **/
  async add_people_list(list) {
    const batchSize = 100; // 每批插入的条数,可以设置为配置项
    const totalBatches = Math.ceil(list.length / batchSize);
    const dataArray = list.map((issueItem) => ({
      name: 张三,
      age: 18
    }));

    for (let i = 0; i < totalBatches; i++) {
      const start = i * batchSize;
      const end = start + batchSize;
      const batch = dataArray.slice(start, end);

      try {
        const my_model = this.build_my_model();
        await my_model.bulkCreate(batch, {
          validate: true, // 可选:在插入前验证数据
          // 其他选项
        });
        Logger.INSTANCE.info(`Batch ${i + 1} inserted successfully.`);
      } catch (error) {
        Logger.INSTANCE.error(`Error inserting batch ${i + 1}:`, error);
      }
    }
  }

 

标签:const,nodejs,my,batchSize,mysql,model,sequelize
From: https://www.cnblogs.com/llcdbk/p/18336306

相关文章

  • 从MySQL大量数据清洗到TiBD说起
    一、业务背景公司主要做的业务是类似贝壳的二手房租售,数据库中存了上亿级别的房源数据,之前数据库使用的是mysql,后面需要将mysql数据库切换成了Tidb,在切换的过程中,需要将老库的数据经过数据清洗后再存入新库(因为有一些表结构的设计变了),其中我们处理的一个逻辑就是将房间......
  • MySQL安装教程(保姆级)
    1.首先要了解自己的计算机打开设置——系统——系统信息然后就可以知道自己计算机的类型了。2.下载MySQL2.1.来到MySQL官网点击进入我们下拉页面,可以找到DOWNLOADS页面默认给咱们选择最新的版本,咱们不用,咱们尽量选一个稳定的版本。而且,版本过高后,就没......
  • mysql复习
     一、DELETE和TRUNCATE的用法DELETE用法DELETE命令用于从数据表中删除指定的记录。其基本语法如下:DELETEFROM表名WHERE条件;示例:DELETEFROMemployeesWHEREemployee_id=100;上述示例将从employees表中删除employee_id为100的记录。......
  • MySQL 中 Varchar(50) 和 varchar(500) 有什么区别?
    问题我们在设计表结构的时候,设计规范里面有一条如下规则:对于可变长度的字段,在满足条件的前提下,尽可能使用较短的变长字段长度。为什么这么规定,主要基于两个方面基于存储空间的考虑基于性能的考虑网上说Varchar(50)和varchar(500)存储空间上是一样的,真的是这样吗?基于性......
  • ctfshow-web入门-nodejs系列
    web334下载源码后缀改为zip打开即可先对源码经行一个简单的分析login.js//引入Express框架varexpress=require('express');//创建一个路由实例varrouter=express.Router();//引入用户数据,假设user模块导出的是一个包含用户项的对象varusers=require('../m......
  • 【MySQL】事务 【上】{事务的版本支持 事务提交方式 实验结论 用户问题 如何理解隔离
    文章目录1.引入事务事务的版本支持事务提交方式实验结论用户问题2.隔离性如何理解隔离性隔离级别查看与设置隔离性4.四种隔离级别的场景读未提交读已提交可重复读串行化1.引入事务当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库的时候,客户端B检查了票数......
  • MYSQL 8.0 社区版的透明数据加密
    和MySQL5.0不同,MySQL8.0不再使用keyring插件,而是使用keyringcomponent。这包括:component_keyring_filecomponent_keyring_encrypted_filecomponent_keyring_ociMySQL企业版支持所有3个,MySQL社区版只支持第一个,即component_keyring_file。本文测试的也是这个。MySQL5......
  • 局域网这客户端连接MySQL数据库,含(CMT X进阶屏连接MySQL数据库)
    1:首先安装MySQL服务器,服务器端安装的是Serverversion:8.0.37MySQLCommunityServer-GPL版本2.修改MySQL配置文件允许远程访问找到并编辑MySQL配置文件my.ini,该文件通常位于C:\ProgramData\MySQL\MySQLServer<version>\my.ini。使用文本编辑器(VsCode)以管理员身份打开m......
  • MySQL5.7derived table &MySQL8.0derived_condition_pushdown
    随着MySQL版本的发展,优化器是越来越智能,优化器开关也越来越多,本文给大家分享一下MySQL对derivedtable的优化处理。何为derivedtable?这里我把它翻译成派生表,简单来讲,就是将from子句中出现的检索结果集当做一张表,比如from一个select构造的子查询,这个子查询就是一个派生表,from......
  • MySQL 学习笔记 进阶(锁 下,InnoDB引擎 上)
    锁 锁-表级锁-表锁介绍表级锁,每次操作锁住整张表。锁定粒度大,发生锁冲突的概率最高,并发度最低。应用在MyISAM,InnoDB,BDB等存储引擎中。对于表级锁,主要分为以下三类:表锁元数据锁(metadatalock,MDL)意向锁表锁对于表锁,分为两类:表共享读锁(readlock)表独占写锁(write......