现在的方法 使用 jdbc 启用它的事务来处理 速度感觉比较慢
现在想想是不是用存储过程会比较快一些? 如何写呢?希望高手给与解答
我们表 4个字段 第一个字段 是自增id 使用序列 第二个是标志位 number 型 都是默认0 第三个 是一个批次号 也是一次写库时所有数据相同的 第四个是个 varchar2(11)的 数据 这个每一条都是不一样的
这样的 应该 如何写呢?
首先说 这个存储过程如何写??
java 如何调这个存储过程并且为这个 存储过程传三参数(是不是传个集合之类当参数会快一些,对应的java应该用啥做参数)
项目紧急 希望高手能够拔刀相助!! 万分之感谢
varchar2 看来是ORACLE的了吧 这个好办了。先把你的记录写到文件 用Process 执行sqlldr命令 你可以查询下 sqlldr命令的参数。
java执行储存过程一般使用 java.sql CallableStatement接口,具体用法可以google。
储存过程每个数据库都不一样,没法写,俺不会。
数据量大还是建议生成文件,然后直接起用线程执行脚本导入
如db2常用的import ,load==
lz可以试试在java中用批量提交的方式把数据插到表里
下面是示意代码
[code="java"]
//假定以下变量已经被初始化
Connection conn;
List dataList;
//带参数的sql
String sql = "insert into my_table(col1, col2, col3, col4) values(?, ?, ?, ?)";
//提交间隔件数
int N = 10000;
//禁用自动提交模式
conn.setAutoCommit(false);
PreparedStatement pstmt = conn.prepareStatement(sql);
for (int i = 1 ; i <= dataList.size() ; i++)
{
//TODO : 设置参数
pstmt.addBatch();
if (i % N == 0
){
pstmt.executeBatch();
}
}
conn.commit();
//启用自动提交模式
conn.setAutoCommit(true);
[/code]
其中的N是每次提交的件数
具体该每多少件提交一次,得根据lz那边的环境具体试验出来
varchar2 看来是ORACLE的了吧 这个好办了。现把你的记录下到文件 用Process 执行sqlldr命令