怎样用java向MySQL中的表插入1亿条数据?
一、用java向MySQL中的表插入1亿条数据的方法
1、使用MySQL的存储过程
MySQL中的存储过程是一组预定义好的SQL语句,可以像函数一样进行调用。使用存储过程可以将数据的插入操作从Java程序中移动到MySQL服务器上执行,从而提高了效率。
创建存储过程的SQL语句如下:
CREATE PROCEDURE insert_data(IN count INT)BEGIN DECLARE i INT DEFAULT 0; WHILE i < count DO INSERT INTO table_name (column1, column2, …) VALUES (value1, value2, …); SET i = i + 1; END WHILE;END
其中,count为插入的总记录数目,table_name为要插入数据的表名,column1、column2等为列名,value1、value2等为对应列的值。该存储过程使用while循环语句将数据插入到指定的表中。
调用存储过程的代码如下:
CallableStatement cstmt = conn.prepareCall("{call insert_data(?)}");
cstmt.setInt(1, 100000000);
cstmt.execute();
使用CallableStatement接口调用存储过程,并通过setInt方法设置参数count的值。最后,通过execute()方法执行存储过程插入数据。
2、使用LOAD DATA INFILE
LOAD DATA INFILE是MySQL中用于导入数据的命令。使用该命令可以将数据文件快速地导入到MySQL数据库中,比直接使用INSERT语句插入数据更有效率。
使用LOAD DATA INFILE的SQL语句如下:
LOAD DATA INFILE 'file_path' INTO TABLE table_name
FIELDS TERMINATED BY ',' (column1, column2, …);
其中,file_path为数据文件的路径,table_name为要插入数据的表名,column1、column2等为列名。该命令可以使用FIELDS TERMINATED BY指定字段分隔符。
在Java程序中,可以使用Statement接口的executeUpdate方法执行LOAD DATA INFILE命令,如下所示:
Statement stmt = conn.createStatement();stmt.executeUpdate("LOAD DATA INFILE 'file_path' INTO TABLE table_name " + "FIELDS TERMINATED BY ',' (column1, column2, …)");
3、使用Java的JDBC调用addBatch()和executeBatch()方法
JDBC是Java Database Connectivity的缩写,它是Java程序和数据库之间的连接桥梁。使用JDBC可以通过Java程序直接访问数据库,并进行数据的增删改查等操作。
使用Java的JDBC,可以通过PreparedStatement接口的addBatch()方法批量插入数据,并使用executeBatch()方法将多个SQL语句一次性提交给数据库执行。
插入数据的代码如下:
String sql = "INSERT INTO table_name (column1, column2, …) VALUES (?, ?, …)";PreparedStatement pstmt = conn.prepareStatement(sql);for (int i = 0; i < 100000000; i++) { pstmt.setInt(1, value1); pstmt.setString(2, value2); … pstmt.addBatch(); if (i % 1000 == 0) { pstmt.executeBatch(); }}pstmt.executeBatch();
其中,sql为要执行的SQL语句,column1、column2等为列名,value1、value2等为对应列的值。使用PreparedStatement接口的setXXX()方法设置SQL语句的参数值。通过for循环批量添加数据,并在每1000条数据后调用executeBatch()方法提交一次数据。最后,通过执行pstmt.executeBatch()方法提交剩余的数据。
二、MySQL插入数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据。你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。
1、语法
以下为向MySQL数据表插入数据通用的?INSERT INTO?SQL语法:
INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN );
如果数据是字符型,必须使用单引号或者双引号,如:”value”。
2、通过命令提示窗口插入数据
以下我们将使用 SQL INSERT INTO 语句向 MySQL 数据表 runoob_tbl 插入数据
实例:
以下实例中我们将向 runoob_tbl 表插入三条数据:
root@host# mysql -u root -p password;Enter password:*******mysql> use RUNOOB;Database changedmysql> INSERT INTO runoob_tbl -> (runoob_title, runoob_author, submission_date) -> VALUES -> ("学习 PHP", "教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl -> (runoob_title, runoob_author, submission_date) -> VALUES -> ("学习 MySQL", "教程", NOW());Query OK, 1 rows affected, 1 warnings (0.01 sec)mysql> INSERT INTO runoob_tbl -> (runoob_title, runoob_author, submission_date) -> VALUES -> ("JAVA 教程", "RUNOOB.COM", '2016-05-06');Query OK, 1 rows affected (0.00 sec)mysql>
注意:使用箭头标记 -> 不是 SQL 语句的一部分,它仅仅表示一个新行,如果一条SQL语句太长,我们可以通过回车键来创建一个新行来编写 SQL 语句,SQL 语句的命令结束符为分号。
在以上实例中,我们并没有提供 runoob_id 的数据,因为该字段我们在创建表的时候已经设置它为 AUTO_INCREMENT(自动增加) 属性。 所以,该字段会自动递增而不需要我们去设置。实例中 NOW() 是一个 MySQL 函数,该函数返回日期和时间。
3、使用PHP脚本插入数据
你可以使用PHP 的 mysqli_query() 函数来执行 SQL INSERT INTO命令来插入数据。该函数有两个参数,在执行成功时返回 TRUE,否则返回 FALSE。
语法:
mysqli_query(connection,query,resultmode);
实例:
以下实例中程序接收用户输入的三个字段数据,并插入数据表中:
';// 设置编码,防止中文乱码mysqli_query($conn , "set names utf8"); $runoob_title = '学习 Python';$runoob_author = 'RUNOOB.COM';$submission_date = '2016-03-06'; $sql = "INSERT INTO runoob_tbl ". "(runoob_title,runoob_author, submission_date) ". "VALUES ". "('$runoob_title','$runoob_author','$submission_date')"; mysqli_select_db( $conn, 'RUNOOB' );$retval = mysqli_query( $conn, $sql );if(! $retval ){ die('无法插入数据: ' . mysqli_error($conn));}echo "数据插入成功\n";mysqli_close($conn);?>
对于含有中文的数据插入,需要添加 mysqli_query($conn , “set names utf8”); 语句。
延伸阅读1:Java语言简介
Java是Sun公司推出的能够跨越多平台的、可移植性较高的一种面向对象的编程语言,也是目前非常先进、特征最丰富、功能较早大的计算机语言。利用Java可以编写桌面应用程序、Web应用程序、分布式系统应用程序、嵌入式系统应用程序等,从而使其成为应用较广泛的开发语言。

相关推荐HOT
更多>>
有哪些不同类型的 API?
一、API的类型API 根据其架构和使用范围进行分类。1、私有 API这类 API 面向企业内部,仅用于连接企业内的系统和数据。2、公有 API?这类 API ...详情>>
2023-10-14 23:46:39
Python的优缺点有哪些?
一、Python的优点1、简单易学Python的语法简单明了,易于理解和学习,非常适合初学者。2、丰富的第三方库Python拥有丰富的第三方库,可以快速开...详情>>
2023-10-14 20:19:16
B+树查询的稳定性为什么重要?
一、B+树查询的稳定性为什么重要首先最大的优势还是磁盘IO和范围,从我个人的看法看,稳定性(每次查询必须从根走到叶子节点)这意味行为可预估...详情>>
2023-10-14 17:40:38
进程如何找到pgd页表,页表的数据结构是什么?
一、进程找到pgd页表的方法在Linux内核中,每个进程都有一个指向其PGD的指针pgd,该指针位于进程描述符结构体(task_struct)中。进程可以通过...详情>>
2023-10-14 17:24:21热门推荐
有哪些不同类型的 API?
沸区块链的工作原理是什么?
热为什么 CIS Benchmarks 非常重要?
热为什么应使用 Docker?
新负载均衡有哪些优势?
使用 XML 有哪些好处??
python 在cmd 下执行脚本语句和在python shell 中的>>>下执行语句有什么区别?
Fortran语言中read*,和read(*,*)的区别?
边缘计算与CDN的区别是什么?
Django限制用户上传文件格式与大小的优异处理方式是什么?
Python单引号与双引号区别?
为什么iOS始终不支持应用双开深度分析给你答案?
高并发、高吞吐是什么?
Python的优缺点有哪些?
技术干货






