2015-09-14 176 views
1

嗨我想在java數據庫中使用java加載csv文件,但我得到的錯誤如"ora-00900 invalid sql statement"。我正在使用Oracle Database 11g企業版。所以我不明白爲什麼它不接受我的加載語句。任何幫助?提前致謝。加載csv文件到oracle數據庫

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(); 
} 

} 
} 
+1

您可能需要'INFILE'和撇號'''之間的空格。 – Andreas

+0

你應該考慮使用Prepared Statements –

+0

Oracle中沒有'LOAD DATA INFILE'。 –

回答

0

infile是否適用於Oracle? It seems that only on MySql.。 SQL Loader替代方案非常快速。檢查official documentation以瞭解如何配置它:

由於問題指出您想使用Java here是從Java調用SQL Loader的幫助。它bassically採用了運行,但依賴於操作系統:

String[] stringCommand = { "bash", "-c", "/usr/bin/sqlldr username/[email protected] 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。您可以從.bat文件調用它。

+0

好的,謝謝:) – user3428496