如何往数据库快速插入百万条数据

数据库如何快速插入百万条数据 数据库如何快速插入百万条数据 ①在内存中创建一个表 CREATE TABLE `vote_record_memory` ( `id` INT (11) NOT NULL AUTO_INCREMENT, `user_id` VARCHAR (20) NOT NULL, `vote_id` INT (11) NOT NULL, `group_id` IN... 阅读详情

具体逻辑实现:
创建两个表,一个内存表,一个数据表
然后将百万数据先存入内存表,再在内存表数据导入数据表
数据库默认好像只能存13万条数据,更改ini配置
max_heap_table_size = 1024M
前提:关闭mysql服务,在操作,重启
在这里插入图片描述

具体SQL语句:

# 创建内存表
CREATE TABLE `vote_record_memory` (  

    `id` INT (11) NOT NULL AUTO_INCREMENT,  

    `user_id` VARCHAR (20) NOT NULL,  

    `vote_id` INT (11) NOT NULL,  

    `group_id` INT (11) NOT NULL,  

    `create_time` datetime NOT NULL,  

    PRIMARY KEY (`id`),  

    KEY `index_id` (`user_id`) USING HASH  

) ENGINE = MEMORY AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;


# 创建数据写入表
CREATE TABLE `vote_record` (  

    `id` INT (11) NOT NULL AUTO_INCREMENT,  

    `user_id` VARCHAR (20) NOT NULL,  

    `vote_id` INT (11) NOT NULL,  

    `group_id` INT (11) NOT NULL,  

    `create_time` datetime NOT NULL,  

    PRIMARY KEY (`id`),  

    KEY `index_user_id` (`user_id`) USING HASH  

) ENGINE = INNODB AUTO_INCREMENT = 1 DEFAULT CHARSET = utf8;


# 更改SQL语句结束符
delimiter |


# 创建SQL函数,用于生成百万条数据
CREATE FUNCTION `rand_string`(n INT) RETURNS varchar(255) CHARSET latin1  

BEGIN   

DECLARE chars_str varchar(100) DEFAULT 

'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';   

DECLARE return_str varchar(255) DEFAULT '' ;  

DECLARE i INT DEFAULT 0;   

WHILE i < n DO   

SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*62 ),1));  

 

SET i = i +1;   

END WHILE;   

RETURN return_str;   

END |


# 生成百万条数据至内存表 2min16s
CREATE  PROCEDURE `add_vote_memory`(IN n int)  

BEGIN    

  DECLARE i INT DEFAULT 1;  

    WHILE (i <= n ) DO  

      INSERT into vote_record_memory  (user_id,vote_id,group_id,create_time ) VALUEs 

(rand_string(20),FLOOR(RAND() * 1000),FLOOR(RAND() * 100) ,now() );  

            set i=i+1;  

    END WHILE;  

END |


# 再次将语法结束符改回来
delimiter ;



# 将内存中的百万数据插入数据表 0.37s
CALL add_vote_memory(1000000);

INSERT into vote_record SELECT * from  vote_record_memory; 
Java实现百万级数据从Excel导入到数据库 在一个后台管理功能中,Excel导入数据是不可缺少,但是当处理大数据量的Excel文件导入时候就可能会带来一些列的问题,本文我们会分析问题产生的原因。并提供解决方案以及完整的实现代码。 阅读详情

相关推荐

如何利用jdbc快速插入百万条数据

如何利用jdbc快速插入百万条数据当须要向数据库插入百万条数据时,利用hibernate,mybatis等持久层框架时耗时较久,此时使用jdbc插入效率会更高。此种场景特别适用于读取文件导入到数据库。可以利用批处理来加快jdbc的插入效率。String sql = "insert into person(id,name) values(?,?)"; Connection c = Connection

斑斑的博客 5247

实现百万级数据从Excel导入到数据库的方式

原创 派大星辽宁身处外企,是一名技术工作者。作为InfoQ、阿里云等技术平台签约作者,致力于打造您专属的编程个人笔记(无广告)。216篇原创内容公众号。

竹林幽深 1969

快速产生百万数据的测试数据库表

第一步 建表不多说,直接上代码 CREATE TABLE `NewTable` ( `id` int(11) NOT NULL AUTO_INCREMENT , `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL , `age` int(11) NOT NULL , `phone` varcha...

Faon1425214630的博客 1071

如何实现百万级数据从Excel导入到数据库

我们要知道 导入功能数据量一旦大起来的话, 批量插入数据库, 就会出现很多问题,1. 比如说 excel文件会很大, 如果一次加载到内存中, 如果jvm设置的内存不足以支撑, 就会导致内存溢出2.百万级数据读取时, 我们进行业务操作, 导入到数据库这一操作, 插入的会导致很慢, 同时也需要考虑性能问题。

m0_68723562的博客 2348

如何实现在4秒内将百万级数据导入SQL Server

上述代码将从指定的CSV文件路径导入数据到名为"MyTable"的表中。本文将详细介绍如何使用一些有效的技术和最佳实践,以在4秒内将百万级数据导入SQL Server数据库。首先,我们需要准备好要导入的百万级数据。确保数据源的格式正确,并根据需要进行必要的数据清洗和转换。通过遵循上述步骤和最佳实践,您可以实现在4秒内将百万级数据导入SQL Server数据库。根据您的具体需求和环境,可能需要进行一些调整和优化。在SQL Server中,我们需要创建一个表来存储导入的数据。根据数据的结构,创建相应的表和列。

ElServer的博客 403

从0开始部署基础的AlwaysOn

在这个快餐文化盛行的时代,应该没多少人真的会沉下心来看理论和具体步骤,加上我自己也需要一篇可以扩展的快速搭建环境的指引,所以特别写了这篇文章。 我们在这里要做的事情有以下几个:安装环境。包括虚拟机和网络配置等。安装Windows域、配置必要的账号密码及功能。搭建域环境并进行配置。安装配置Windows Server Failover Cluster(WSFC)。安装SQL Server。配置Alw

MVP黄钊吉(發糞塗牆) 7568

【Mysql】大批量(百万级)数据插入数据库应该怎么做(提高效率)?

一:在数据库中进行操作 1.合并sql语句(一个sql插入单条数据转为一个sql插入多条数据) 一个sql插入一条数据: insert into table_name(id,name) values(1,"小明"); insert into table_name(id,name) values(2,"小红"); 一个sql插入多条数据: insert into table_name(id,name) values(1,"小明")(2,"小红"); 原因:合并后减少了日志生成量 2.

小树じ的博客 1万+

QSPI Flash的原理与QSPI时序的Verilog实现

本节主要是讨论QSPI(Quad SPI,四线SPI总线)的相关内容。我的开发板上有一片型号是W25Q128BV的Quad SPI Flash存储器,本文将以它为例子来说明QSPI操作的一些内容。

Go Forward Forever! 4166

mysql插入10万测试_MySQL数据库之mysql中迅速插入百万条测试数据的方法

本文主要向大家介绍了MySQL数据库之mysql中迅速插入百万条测试数据的方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。对比一下,首先是用mysql的存储过程弄的:复制代码代码如下:mysql>delimiter$mysql>SETAUTOCOMMIT=0$$mysql>createproceduretest()begindecla...

weixin_35960357的博客 362

小案例:利用图床自动化批量上传图片并获取图片链接

用python爬虫写了一个小脚本,用来自动上传图片到图床,然后返回链接,我们只需直接复制链接就可以。(需要安装Requests库) 因为不同图床需要提交的POST表单不一致,所以在这里我用ImgURL图床做示范,如果大家有需求,可自行修改代码。使用脚本的时候,我们只需把需要上传的图片和这个脚本放在同一个文件夹中,然后运行脚本,稍作等待,看到提示时就可以在脚本运行文件夹中发现一个名为“图片链接地址.txt”的文件,里面就是图片链接啦! 四、图片链接地址.txt(单张图片):...

采菊东篱下,Python满乾坤! 4410

避开PFC设计大坑:从环路分析到参数整定的5个常见误区与解决方案

本文深入解析PFC电路设计中从环路分析到参数整定的5个常见误区,包括电感参数设计、小信号模型适用边界、电压环与电流环耦合效应等。通过实际案例和PSIM仿真数据,提供工程落地的解决方案,帮助工程师避开设计陷阱,提升电路性能与可靠性。

weixin_30666401的博客 325

MySQL批量插入百万条数据

这是个面试题,我的第一想法是foreach 一条条插入。凉凉!!! 1.建库建表million_data  test 字段 id name time 2.由于单条循环插入肯定没有拼接一条sql语句快的,所以直接拼接一条,运行 Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 1099...

月雨华的博客 2万+

【Claude】Not logged in 错误:未登录状态的判断与 /login 认证路径 bug报错已解决

login 是首选修复:大多数 "Not logged in" 只需重新执行 /login检查系统时间:时间偏差是 Token 验证失败的常见原因避免密钥库被清理:将 Claude Code 添加到系统清理工具的白名单企业环境用 API Key:如果组织禁用 OAuth,使用 API Key 认证区分凭证类型:理解 Not logged in(无凭证)vs Invalid key(有但无效)

博客 7314

DataTable 快速导入数据库——百万条数据只需几秒!!

DataTable 快速导入数据库——百万条数据只需几秒!! using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;using Syste...

weixin_30906701的博客 335

Vue3 - Element Plus 下拉选择器 el-select 覆盖修改 placeholder样式,解决覆盖不生效问题(支持修改文字颜色、文字大小、选择器边框、hover效果、宽高等任意样式

vue3,element-plus,el-select,下拉选择器,下拉选择框,Select选择器,deep覆盖无效怎么办,怎么修改placeholder文字颜色,选择器select修改边框样式,修改文字大小,elementPlus选择器如何覆盖hover效果,使用deep改不了样式,修改边框颜色,select去掉边框,vue3+elementPlus中select选择器如何修改placeholder文字样式,修改el-select样式,select选择器样式覆盖不了咋办,el-select如何覆盖原样式,

🏆 前端领域优质创作者 1万+

SerDes学习笔记:接收机CTLE均衡架构示例(USB3.1、PCIe3.0\4.0\5.0)

本文分析了USB3.1和PCIe标准中连续时间线性均衡器(CTLE)的设计演进。USB3.1Gen1采用一阶CTLE,其传递函数在长信道下具有有源滤波器特性;Gen2版本延续类似架构,通过Adc参数调节零点频率。PCIeGen3/4保持一阶结构但调整极点位置,Gen5升级为二阶传递函数,扩展Adc调节范围至-5dB~-15dB。研究表明,CTLE能有效改善信号完整性,通过参数优化可平衡信号衰减与码间干扰抑制。

一只豌豆象的博客 626

如何瞬间在数据库插入一百万条记录

这两天发现了一个东西很好玩:如何在你的数据库中插入一百万条记录(要求三分钟之内)hoo~~hoo~~~1 首先 create table news     (          newsid int primary key auto_increment,        newstitle varchar(100),        newscontent varchar(200),        n

鑫少爷的专栏 9105

读懂ARM汇编程序,你只差这篇!保姆级教程(附完整示例剖析)!

ARM汇编中的符号、标号、伪操作有哪些?C语言和汇编语言如何混合编程?GNU ARM汇编和ARM汇编的区别有哪些?

车载系统攻城狮 1万+

将MySQL数据库中的百万数据导出为CSV格式存储

第一步: 找到要转储为csv文件格式的数据库中的数据表 第二步:右击:导出向导(如图所示) 第三部:选择文件格式(几乎傻瓜式安装)如图所示 大功告成!!接下来找到该文件打开查看数据是否有误 ​​​​​​​MySQL数据库10秒内插入百万条数据 (多字段)【详解】 如有错误,欢迎指正 Thanks ...

杨大仙 1915

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

oracle快速插入1kw条数据

oracle快速插入1kw条数据 declare m integer; begin dbms_output.put_line('start:'||sysdate); m:=0; for i in 1..1000000 loop m:=m+1; INSERT INTO table() commit; end loop; dbms_output.put_line('end:'||sysdate); end;

xlecho的博客 343

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

利用数据库存储过程对一个数据库中的表插入数据

--创建表 create table test_p_2( log number(10) primary key, name varchar2(20), psaaword varchar2(20) ); create sequence seq_log; ...

chijungang3151的博客 1288

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

mysql插入1000000万条数据

批量创建插入脚本数据

格林王子举哥 343

php mysql查询1分钟内_php操作mysql,1分钟内插入百万数据

实测45秒: 原理:mysql插入数据库 插入时候并没有提交到mysql表里,在insert后面需要执行commit操作才会插入数据库默认mysql是自动提交,如果关闭自动提交,在insert几十万数据在进行commit那么会大大缩短入库时间建表用户表CREATE TABLE `user` (`id` BIGINT (20),`name` VARCHAR(20))ENGINE=INNODB;日志表...

weixin_42499530的博客 468

快速创建百万千万级测试数据

1 简介 在进行查询操作的性能测试时,我们经常需要在线下环境构建大量的基础数据供我们测试,模拟线上的真实环境,动不动就需要上千万条,如果常规方法插入,那会浪费大量的时间,所以现实生活中需要使用脚本或存储过程来插入数据,但是这需要使用者拥有熟练的SQL技能,另外所写的脚本或存储过程对于不同数据库并不通用,在需要准备多种数据库测试的时候,也需要耗费大量时间去编写插入过程。如何简单快速高效的在短时间之内就生成千万百万条数据,本文将介绍如何利用HHDBCS工具帮你轻轻松松解决难题,小白亦轻松上手,并且适用各大主流数

m0_61228937的博客 966

SQL Server中快速生成大量记录的SQL脚本

下面脚本快速生成1百万条记录的表:set nocount onuse lawgoif object_id('dbo.nums') is not nulldrop table dbo.numsgocreate table dbo....

csdn11223的博客 385
上一篇: (二十一)Django的类视图和动静分离
下一篇: Django搭建电商网站之电商项目开始与建模_后台注册登录退出(一)
孜孜孜孜不倦
博客等级 码龄7年 1803粉丝 277原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孜孜孜孜不倦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值