怎样用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应用程序、分布式系统应用程序、嵌入式系统应用程序等,从而使其成为应用较广泛的开发语言。
猜你喜欢LIKE
相关推荐HOT
更多>>为什么Oracle数据库没有很好的卸载工具?
一、Oracle数据库没有很好的卸载工具的原因1、安装程序以压缩包形式存在大部分Oracle数据库安装程序都是以压缩包存在的,没有独立的卸载程序。...详情>>
2023-10-18 18:40:58mysql的Innodb引擎中,主键索引和普通索引的工作原理是什么?
一、mysql的Innodb引擎中,主键索引和普通索引的工作原理在InnoDB中,表都是根据主键顺序以索引的形式存放的,这种存储方式的表称为索引组织表...详情>>
2023-10-18 15:19:29非常适合移动和桌面应用的JavaScript框架是什么?
一、React NativeReact Native是一个广受欢迎的JavaScript框架,特别适合移动应用开发。它允许开发者使用JavaScript和React的语法来构建原生移...详情>>
2023-10-18 13:10:11一个事务提交时,redo log和undo log以及bin log的生成流程是怎么样的?
一、redo log和undo log以及bin log的生成流程1.undolog是在innodb的回滚段里的(确切是rollback segment->undo segment),这个也是buff...详情>>
2023-10-18 12:35:31热门推荐
用什么数据库存储大量简单数据比较合适?
沸JAVA实现短网址服务的原理是什么?
热安卓原生app开发为什么要用sql本地数据库?
热oracle数据库库中两个表之间怎么同步数据?
新为什么Oracle数据库没有很好的卸载工具?
怎样用java向MySQL中的表插入1亿条数据?
做一个公司内部使用的小程序,应该用什么语言和数据库?
如何建立数据库,利用什么软件建立数据库?
org.Hs.eg.db包载入失败是为什么?
mysql update主键更新很慢会是什么原因?
如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?
mysql的Innodb引擎中,主键索引和普通索引的工作原理是什么?
Plugin解决了什么问题?
Python的pymysql、mysql、mysqlx库都有什么区别?