java - 将csv文件加载到oracle数据库

标签 java oracle csv oracle11g

您好,我想使用 java 在 Oracle 数据库中加载 csv 文件,但是我收到了类似 “ora-00900 invalid sql statements” 的错误。我使用的是oracle数据库11g企业版。所以我不明白为什么它不接受我的负载声明。有什么帮助吗?提前致谢。

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class test {
public static void main(String[] args){
  test t=new test();
  t.inserintoDb("C:\\Users\\fiels\\2.csv");
}
public void inserintoDb(String path){
Connection conn=null;
Statement stmt=null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn=(Connection) DriverManager.getConnection(
       "jdbc:oracle:thin:@address:orcl","user","password");

stmt=conn.createStatement();
String select1="truncate table table1";
stmt.execute(select1);
String select2="LOAD DATA INFILE'" +path+"' INTO TABLE table1 FIELDS TERMINATED BY ',' (customer_nbr, nbr)";
stmt.execute(select2);
}catch(Exception e){
 e.printStackTrace();
 }

}
}

最佳答案

infile 可以在 Oracle 上运行吗? It seems that only on MySql. 。 SQL Loader 替代方案确实很快。检查official documentation查看如何配置它:

正如问题所述,您想使用 Java here是从 Java 调用 SQL Loader 的帮助。它基本上使用运行时,但取决于操作系统:

String[] stringCommand = { "bash", "-c", "/usr/bin/sqlldr username/password@sid control=/path/to/sample.ctl"};

Runtime rt = Runtime.getRuntime();
Process proc = null;
try {
    proc = rt.exec(stringCommand);
}catch (Exception e) {
    // TODO something
}finally {
    proc.destroy();
}

但是,如果您只想加载一些表供个人使用,则不需要 java.util.您可以从 .bat 文件调用它。

关于java - 将csv文件加载到oracle数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558603/

相关文章:

java - 如何使用构造函数注入(inject)模拟类

sql - Oracle SQL - SELECT 查询锁定索引并阻止 DML session

Python 将 lambda 函数应用于 csv 文件(大文件)

c# - 从csv导入到asp.net中的mysql数据库中删除双引号("")

java - 如何重构具有相同结构、不同类的方法(Java)

java - zxing :unable to read barcode which is a part of a larger image

java - 如何模拟 Springockito 模拟的行为?

Oracle - 如何通过将 n 行的总和在 a 和 b 之间分组来进行选择和排序

sql - 更新单列的所有行

python - 数据帧索引(仅)到 CSV python