千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:青岛千锋IT培训  >  技术干货  >  怎样用java向MySQL中的表插入1亿条数据?

怎样用java向MySQL中的表插入1亿条数据?

来源:千锋教育
发布人:xqq
时间: 2023-10-18 18:09:51

一、用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

oracle数据库库中两个表之间怎么同步数据?

2023-10-18

怎样用java向MySQL中的表插入1亿条数据?

2023-10-18

做一个公司内部使用的小程序,应该用什么语言和数据库?

2023-10-18

最新文章NEW

用什么数据库存储大量简单数据比较合适?

2023-10-18

如果同一条记录同时多个进程可能对不同的字段进行修改,怎么保证列锁?

2023-10-18

Plugin解决了什么问题?

2023-10-18

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>