是否有一个简单的Java库或方法将采用SQL查询并将CSV文件中的数据加载到oracle数据库。请帮忙
答案 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)
我认为此工具可以帮助您解决任何类型的数据库导入导出问题。
答案 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。