使用JDBC在MySQL数据库中如何快速批量插入

使用JDBC在MySQL数据库中如何快速批量插入,第1张

可以使用jdbc预编译+批量更新,这样的执行效率最高。

具体是这样使用的:

循环2000条数据例如数据被装到了一个名叫dataList的List<Map<String,String>>中,那么批量更新就是这样执行的

Map map = null

String data1= ""

String data2 = ""

String sql = insert into biao values(?,?)

PreparedStatement preStmt = conn.prepareStatement(sql)

for(i = 0i<dataList.size()i++){

map = dataList.get(i)

data1=map.get("data1")

data2 = map.get("data2")

preStmt.setString(1,data1)

preStmt.setString(2, data2)

preStmt.addBatch()

}

preStmt.executeBatch()

preStmt.clearBatch()

什么对于你来说是最关键的?

首先你会不会jdbc连接数据库执行一般的sql语句?如果不会,先去搜这方面的东西。

如果你只是纠结于存储过程在java中的调用,那么步骤如下:

1.事先写一个存储过程xx

2.用jdbc连接数据库执行语句“exec xx”就可以了。如果存储过程带参数a和b,语句就是“exec xx a b”

一次性插入大量数据,只能使用循环

如:游标,while 循环语句

下面介绍While 循环插入数据,

SQL 代码如下:

IF OBJECT_ID('dbo.Nums') IS NOT NULL

DROP TABLE dbo.Nums

GO

CREATE TABLE dbo.Nums(n INT NOT NULL PRIMARY KEY)

DECLARE @max AS INT, @rc AS INT

SET @max = 5000000

SET @rc = 1

INSERT INTO Nums VALUES(1)

WHILE @rc * 2 <= @max

BEGIN

INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums

SET @rc = @rc * 2

END

INSERT INTO dbo.Nums SELECT n + @rc FROM dbo.Nums WHERE n + @rc <= @max

--以上函数取自Inside SQL Server 2005: T-SQL Query一书。

INSERT dbo.Sample SELECT n, RAND(CAST(NEWID() AS BINARY(16))) FROM Nums


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11952990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存