繁体   English   中英

如何将数据从java加载到oracle DB

[英]How can I load data from java into oracle DB

我即将开发一个应用程序来将数据从文件加载到数据库中。 我已经使用 sqlLoader 通过命令行执行此操作,并且效果很好,但现在我想为该过程提供一个 GUI。

我正在考虑使用 Runtime.exec() 从 java 调用 sqlLoader,但我想我会将我的程序限制为仅适用于 Windows,因此没有可移植性。

我想知道是否有更有效/本机的方式通过 java 将文件中的数据加载到数据库中。 就像是:

文件 -> JAVA -> ORACLE。

任何建议都是最受欢迎的!

干杯,

管理远程进程并让它依赖于 Oracle 实用程序操作系统安装是一个维护难题。 我使用了关联数组和包函数。 在包中为 VARCHAR2、NUMBER 等输入数组定义类型。 然后(基本上!)在输入文件上使用 readline().split(",") 为每一列构建并行数组。 将数组传递给包函数,该函数在单次往返中使用 Oracle 批量处理:

my_package.do_my_insert( field1_array, field2_array, field3_array ... )
   forall idx in field1_array.first .. field1_array.last
      insert into table1 ( field 1, field2, field3 ... )
      values ( field1_array(idx), field2_array(idx), field3_array(idx) ... );

(很多关于如何在上面的 JDBC 中创建 Oracle 数组类型的缺失代码,但 Oracle 在其他地方记录了这一点)

与 SQL 批处理相比,性能轻松提升 10 倍

您可以使用 JDBC 连接到 Oracle 并管理来自文件的数据。 这是关于 JDBC 的教程: http : //www.cs.ubc.ca/~ramesh/cpsc304/tutorial/JDBC/jdbc1.html

回复后编辑:

  • SQLLoader 也适用于其他平台(可能名称不同),因此如果您坚持避免使用 JDBC,那么您可以为 SQLLoader 编写前端。
  • 您可以通过更新批处理来提高 JDBC 批量上传的性能。

有多种方法可以通过 Java 将文件加载到数据库。

  1. 读取文件,解析数据并构造一个查询,如INSERT ALL into table name (col1,col2,..) values (val1,val2,..) select * from dual; 并批量插入。
  2. 读取文件,解析数据,注入 Java 对象,创建列表。 然后迭代列表并通过 JPA ORM 概念插入到数据库中。
  3. 读取文件,解析数据转换成XML,并通过PL/SQL程序发送XML加载。
  4. 从 Java 调用 SQL 加载器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM