如何使用java代码向oracle数据库一次性插入多条数据

如何使用java代码向oracle数据库一次性插入多条数据,第1张

ClassforName("oraclejdbcdriverOracleDriver");

String url = "jdbc:oracle:thin:@你的主机ip :1521:orcl";// 设置连接字符串

String username = "你的用户名";

String password = "你的密码";

Connection con=javasqlDriverManagergetConnection(url,user,password);

Statement stmt = concreateStatement();

StringBuffer sql = new StringBuffer("insert into user values (" + listget(1)getId()+", "+listget(1)getUserName()+", "+listget(1)getPassword()+")");

for(int i = 2; i < listsize(); i++){

    sqlappend(", ("+ listget(i)getId()+", "+listget(i)getUserName()+", "+listget(i)getPassword()+")");//

}

sqlappend(";");

  ResultSet rs = stmtexecuteQuery(sql);

rsclose();

 stmtclose();

  conclose();

你的理解是正确的,可以这样做。

生成固定格式的数据文件,然后可以使用oracle的数据加载工具sqlldr进行直接插入数据,效率上会好很多,在并发的情况下,oracle声称可以每小时100G的数据量。

2个数据库如果都是oracle或者mysql就一样 *** 作了

如果数据库不同,你得拼对应的insert语句, 也可以用hibernate什么的来做,

一般这种情况,还是写脚本比较好点, 简单,来的快

public void MultiInsertData(DataSet ds)

{

string connt = "Oracle的连接字符串";

string sql = "select id,name,… from tablename";必须与ds中的一致

DataTable dt = dsDefaults[0];

OracleConnection conn = new OracleConnection(connstr);

OracleCommand cmd = new OracleCommand(sql, conn);

connOpen();

OracleDataAdapter da = new OracleDataAdapter(sqlcmd);

OracleCommandBuilder cb = new OracleCommandBuilder(sqlda);

daUpdate(dt);

connClose();

sqlconnDispose();

}

用这个批量进行导入,速度快,而且方便呀

导出的话,在查询结果中选中查询结果右单击就有 COPY TO EXCEL这个选择的,导入是有点麻烦的,如果你数据少的话建议参考下边的F方法。

=========================================================

将excel数据导入oracle中 A、有一个比较麻烦但保证成功的方法。

1、在本地创建一个Access数据库,将Excel数据先导入到Access。可直接导入点击鼠标右键,选择导入,文件类型选择要导入的Excel文件,也可通过创建宏用TransferSpreadsheet函数实现。

2、在本地创建ODBC,链接oracle数据库。将oracle中需要导入数据的表以链接表的方式在本地Access中创建(千万不要使用导入表)。

3、在Access数据库中创建插入查询将导入好的Excel数据导入到oracle中。

此方法保证成功。

B、也可以导入sql server 用它的导出工具导入oracle 但对一些image字段支持不好,你如果

没这种字段就行。

用MS_sqlserver 提供的数据导出导入功能可以方便的把excel方便的导入oracle数据库

C、一种方法:

先把Excel另存为csv格式文件,如testcsv,再编写一个insertctl

用sqlldr进行导入!

insertctl内容如下:

load data --1、控制文件标识

infile 'testcsv' --2、要输入的数据文件名为testcsv

append into table table_name --3、向表table_name中追加记录

fields terminated by ',' --4、字段终止于',',是一个逗号

(field1,

field2,

field3,

fieldn)-----定义列对应顺序

注意括号中field排列顺序要与csv文件中相对应

然后就可以执行如下命令:

sqlldr user/password control=insertctl

有关SQLLDR的问题

控制文件:inputctl,内容如下:

load data --1、控制文件标识

infile 'testtxt' --2、要输入的数据文件名为testtxt

append into table test --3、向表test中追加记录

fields terminated by X'09' --4、字段终止于X'09',是一个制表符(TAB)

(id,username,password,sj) -----定义列对应顺序

其中append为数据装载方式,还有其他选项:

a、insert,为缺省方式,在数据装载开始时要求表为空

b、append,在表中追加新记录

c、replace,删除旧记录,替换成新装载的记录

d、truncate,同上

问题:SQLLDR能不能保留表中原有的数据,如果发现KEY重复时,再UPDATE对应的记录?

D、先EXCEL文件成TXT文件

再使用SQLLOADER

E、将EXCEL文件保存成csv格式 然后用sqlload来导入表中

sqlload是Oracle自带的数据倒入工具,应该是没有可视化工具的(至少我一直用命令行)。

直接在命令行下敲入sqlldr即可得到帮助。

F、如果你的单个文件不大的情况下(少于100000行), 可以全选COPY ,然后用PL/SQL:

select from table for update 然后打开锁, 再按一下加号 鼠标点到第一个空格然后粘贴 COMMIT即可(小窍门, ORACLE不支持的, 但很好用, 不会有问题)

以上就是关于如何使用java代码向oracle数据库一次性插入多条数据全部的内容,包括:如何使用java代码向oracle数据库一次性插入多条数据、oracle大量数据进行入库 *** 作、用Oracle如何实现同时向两个数据库中批量添加相同的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/sjk/10188929.html

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

发表评论

登录后才能评论

评论列表(0条)

保存