日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Java千万数据导入mysql_java之5分钟插入千万条数据

發(fā)布時(shí)間:2023/12/4 数据库 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java千万数据导入mysql_java之5分钟插入千万条数据 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

雖說不一定5分鐘就插入完畢,因?yàn)槿Q去所插入的字段,如果字段過多會(huì)稍微慢點(diǎn),但不至于太慢。10分鐘內(nèi)基本能看到結(jié)果。

之前我嘗試用多線程來實(shí)現(xiàn)數(shù)據(jù)插入(百萬條數(shù)據(jù)),半個(gè)多小時(shí)才二十多萬條數(shù)據(jù)。

線程池?cái)?shù)據(jù)插入核心代碼:

ExecutorService executorService = Executors.newFixedThreadPool();

executorService.submit(new Runnable() {

@Override

public void run() {

for (int i = ; i < ; i++) {

TestUser user = new TestUser();

user.setName(RandomUtil.randomString());

userDao.insert(user);

System.out.println("插入數(shù)據(jù):" + i);

}

System.out.println(Thread.currentThread().getName() + "正在執(zhí)行任務(wù)");

}

});

應(yīng)用場景:

造測試數(shù)據(jù),如千萬甚至億萬級(jí)別的數(shù)據(jù)自動(dòng)快速生成。

關(guān)鍵核心實(shí)現(xiàn)類代碼如下:

long startTime = System.currentTimeMillis();

try {

for (int i = ; i < ; i++) {

List users = new ArrayList<>();

for (int j = ; j < ; j++) {

TestUser user = new TestUser();

user.setName(RandomUtil.randomString());

user.setName2(RandomUtil.randomString());

user.setName3(RandomUtil.randomString());

user.setName4(RandomUtil.randomString());

user.setName5(RandomUtil.randomString());

user.setName6(RandomUtil.randomString());

user.setName7(RandomUtil.randomString());

user.setName8(RandomUtil.randomString());

user.setName10(RandomUtil.randomString());

user.setName11(RandomUtil.randomString());

user.setName12(RandomUtil.randomString());

user.setName13(RandomUtil.randomString());

user.setName14(RandomUtil.randomString());

user.setName15(RandomUtil.randomString());

user.setName16(RandomUtil.randomString());

user.setName17(RandomUtil.randomString());

user.setName18(RandomUtil.randomString());

user.setName19(RandomUtil.randomString());

user.setName20(RandomUtil.randomString());

users.add(user);

}

int changed = userDao.batchAdd(users);

System.out.println("#" + i + " changed=" + changed);

}

} catch (Exception ex) {

ex.printStackTrace();

} finally {

long endTime = System.currentTimeMillis();

System.out.println("Time elapsed:" + toDhmsStyle((endTime - startTime) / ) + ".");

}

代碼原理:

插入一千條數(shù)據(jù)后提交一次,然后重復(fù)一萬次的方式。

關(guān)鍵核心DAO:

@Repository

public interface TestUserDao extends BaseMapper {

int batchAdd(@Param("users") List users);

}

XML:

insert into test_user(name,name2,name3,name4,name5,name6,name7,name8,name9,name10,name11,name12,name13,name14,name15,name16,name17,name18,name19,name20)

values

(#{item.name},#{item.name2},#{item.name3},#{item.name4},#{item.name5},#{item.name6},#{item.name7},#{item.name8},#{item.name9},#{item.name10},#{item.name11},#{item.name12},#{item.name13},#{item.name14},#{item.name15},#{item.name16},#{item.name17},#{item.name18},#{item.name19},#{item.name20})

【JDBC】使用Spring提供的JDBCTemplate通過Statement向MySql數(shù)據(jù)庫插入千萬條數(shù)據(jù),耗時(shí)4m55s,使用insert語句批量插入方式二

這回依然是使用 insert批量插入這種方式 insert into emp(name,age,cdate) values ('A'?,?20,?'2019-10-13 00:00:00'), ('B ...

【JDBC】使用Spring提供的JDBCTemplate通過PrepareStatement向MySql數(shù)據(jù)庫插入千萬條數(shù)據(jù),耗時(shí)32m47s,速度提升有限

數(shù)據(jù)庫環(huán)境還和原來一樣,只是從Statement換成了PrepareStatement,都說PrepareStatement因?yàn)轭A(yù)編譯比Statement快,但是實(shí)際運(yùn)行真快不了多少. 代碼如下: p ...

&lbrack;MyBatis&rsqb;五分鐘向MySql數(shù)據(jù)庫插入一千萬條數(shù)據(jù) 批量插入 用時(shí)5分左右

本例代碼下載:https://files.cnblogs.com/files/xiandedanteng/InsertMillionComparison20191012.rar 我的數(shù)據(jù)庫環(huán)境是mys ...

orcle 如何快速插入百萬千萬條數(shù)據(jù)

有時(shí)候做實(shí)驗(yàn)測試數(shù)據(jù)用到大量數(shù)據(jù)時(shí)可以用以下方法插入: 方法一:使用xmltable create table bqh8 as select rownum as id from xmltable('1 ...

java向數(shù)據(jù)庫插入N條數(shù)據(jù)

為了測試mysql的索引,要向數(shù)據(jù)庫先插入上萬條數(shù)據(jù),然后再測試.手動(dòng)插入太麻煩,寫了一段代碼. 先上代碼: package action; import java.sql.Connection; i ...

mysql自定義函數(shù)并在存儲(chǔ)過程中調(diào)用,生成一千萬條數(shù)據(jù)

mysql 自定義函數(shù),生成 n 個(gè)字符長度的隨機(jī)字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

你向 Mysql 數(shù)據(jù)庫插入 100w 條數(shù)據(jù)用了多久?

閱讀本文大概需要 2 分鐘. ▌目錄 多線程插入(單表) 多線程插入(多表) 預(yù)處理 SQL 多值插入 SQL 事務(wù)( N 條提交一次) ▌多線程插入(單表) 問:為何對(duì)同一個(gè)表的插入多線程會(huì)比單線程 ...

LOAD DATA INFILE讀取CSV中一千萬條數(shù)據(jù)至mysql

作業(yè)要求 構(gòu)建一個(gè)關(guān)系模式和課本中的關(guān)系movies(title,year,length,movietype,studioname,producerC)一樣的關(guān)系,名稱自定,在這個(gè)關(guān)系中插入1000萬 ...

ArrayList插入1000w條數(shù)據(jù)的時(shí)間比較分析

一分鐘系列: 讀懂GC日志 ArrayList插入1000w條數(shù)據(jù)之后,我懷疑了jvm... Java JIT性能調(diào)優(yōu) Java性能優(yōu)化指南系列(三):理解JIT編譯器 準(zhǔn)備:調(diào)試程序加入VM Opt ...

隨機(jī)推薦

iOS簡易圖片選擇器 &lpar;圖片可多選&comma;仿微信&rpar;

調(diào)用方法 NickyImagePickerViewController *pickerController = [[NickyImagePickerViewController alloc]init] ...

表結(jié)構(gòu)導(dǎo)出到excel中

SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表說明 = case when a.colorder=1 then isnull ...

HDU 1465 不容易系列之一&lpar;錯(cuò)排,遞歸&rpar;

簡而言之,就是把n個(gè)信封全部裝錯(cuò)的可能數(shù).(中問題,具體看題目) //當(dāng)n個(gè)編號(hào)元素放在n個(gè)編號(hào)位置,元素編號(hào)與位置編號(hào)各不對(duì)應(yīng)的方法數(shù)用M(n)表示, //那么M(n-1)就表示n-1個(gè)編號(hào)元素放在 ...

「Poetize9」升降梯口

3056: 升降梯口 Time Limit: 2 Sec??Memory Limit: 128 MBSubmit: 43??Solved: 42[Submit][Status] Description ...

NET版微信客戶端&period;

微信客戶端.NET版 目錄 說明 功能 原理步驟 一些參考 說明 前兩天比較閑,研究了一下web版微信.因?yàn)橹翱催^一篇博客講微信web協(xié)議的,后來嘗試分析了一下,半途中發(fā)現(xiàn)其實(shí)沒什么意義,但又不想半 ...

STL 源代碼分析 算法 stl&lowbar;heap&period;h

本文senlie原版的.轉(zhuǎn)載請(qǐng)保留此地址:http://blog.csdn.net/zhengsenlie heap ----------------------------------------- ...

Hibernate緩存和狀態(tài)

緩存是介于應(yīng)用程序和物理數(shù)據(jù)源之間,其作用是為了降低應(yīng)用程序?qū)ξ锢頂?shù)據(jù)源訪問的頻次,從而提高了應(yīng)用的運(yùn)行性能. ? 緩存的介質(zhì)一般是內(nèi)存,所以讀寫速度很快.但如果緩存中存放的數(shù)據(jù)量非常大時(shí),也會(huì)用硬盤 ...

&lbrack;ASP&period;NET&rsqb;&lbrack;Session&rsqb; 使用 SQLServer 會(huì)話管理解決 Session 丟失問題

使用 SQLServer?會(huì)話管理解決 Session 丟失問題 步驟 1.通過命令行執(zhí)行 aspnet_regsql.exe 程序(不要雙擊安裝),先在 CMD 中輸入命令 cd C:\Window ...

Swift 之屬性setter、getter方法

Swift 之屬性setter.getter方法 Swift中的屬性分為兩種屬性,一種就是計(jì)算型屬性?一種就是存儲(chǔ)型屬性,開始我雖然知道這兩種屬性,但是了解并不深對(duì)于他的setter和getter方法 ...

總結(jié)

以上是生活随笔為你收集整理的Java千万数据导入mysql_java之5分钟插入千万条数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。