将CSV文件导入oracle DB

时间:2010-11-03 09:01:51

标签: java oracle

是否有一个简单的Java库或方法将采用SQL查询并将CSV文件中的数据加载到oracle数据库。请帮忙

6 个答案:

答案 0 :(得分:5)

除非绝对必要,否则您不必使用Java将数据文件加载到表中。相反,我建议使用专门为此目的而设计的Oracle命令行SQL*Loader实用程序。

答案 1 :(得分:3)

对于类似的任务,我通常使用 Groovy脚本,因为它非常简单快捷地编写并在JVM上运行。

......一个例子:

import groovy.sql.Sql

def file1 = new File(/C:\Documents and Settings\USER\Desktop\Book1.csv/)
def reader = new FileReader(file1)

def sql = Sql.newInstance("jdbc:oracle:thin:@XXXXXX:XXXX:XXX", "SCHEMA",
      "USER", "oracle.jdbc.driver.OracleDriver")

reader.each { line ->
   fields =  line.split(';')
   sql.executeInsert("insert into YOUR_TABLE values(${fields[0]},${fields[1]},${fields[2]})")
}

这是一个基本的例子,如果你的csv中有双引​​号和半列,你可能想用OpenCSV来处理它。

答案 2 :(得分:0)

您可以使用正则表达式转换CSV中的每一行,进行插入查询,然后发送到Oracle(使用JDBC)。

答案 3 :(得分:0)

我认为此工具可以帮助您解决任何类型的数据库导入导出问题。

http://www.dmc-fr.com/home_en.php

答案 4 :(得分:0)

您是否在数据库服务器上的文件中包含该CSV,或者可以将其存储在那里?然后,您可以尝试让Oracle通过为文件所在的路径声明DIRECTORY对象来打开它,然后创建一个EXTERNAL TABLE,您可以在SQL中查询。 Oracle会为您解析文件。

答案 5 :(得分:0)

如果您对Python开放,可以使用SQL * Loader进行批量加载

loadConf=('sqlldr userid=%s DATA=%s control=%s LOG=%s.log BAD=%s.bad DISCARD=%s.dsc' % (userid,datafile, ctlfile,fn,fn,fn)).split(' ')

p = Popen(loadConf, stdin=PIPE, stdout=PIPE, stderr=PIPE, shell=False, env=os.environ)

output, err = p.communicate()

行插入会快得多。

我上传了基本的工作示例here