프로그래밍 및 Java가 완전히 새로운 것입니다. 따라서 Java 코드를 실행하면 다음과 같은 오류가 발생합니다. 나는 오라클 테이블에 고유 한 제약이 있다는 것을 알고 있으므로 고유 한 값만 읽으면 어떻게 테이블에 기록 될 때 고유 한 제약 조건 오류가 발생하지 않습니까? 일시적으로 제약 조건을 해제하려고하면 모든 것이 정상적으로 작동합니다. 그러나 나는 테이블을 바꾸기로되어 있지 않습니다. 그래서 내가 필요로하는 것은 CSV 파일에서 유일한 레코드 만 읽고 데이터베이스에 쓰는 방법을 찾는 것입니다.CSV 파일 (고유 레코드)을 읽고 Java를 사용하여 Oracle에 쓰기 - ORA-00001 : 고유 제한 조건 (DUMMY.SYS_C008271) 위반됨
PS : 여기, 데이터베이스에 그것을 쉽게 내 의사입니다 (COL1은, Col2의, 열 3, Col4가) SELECT TABLE_ORACLE INTO INSERT DISTINCT COL1, Col2의, 열 3, Col4 TABLE_CSV
FROM고마워요 !!
package dummy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import java.io.*;
public class Main {
public static void main(String[] args) {
String csvFile = "C:/Users/Jane/Documents/dummyfile.csv";
BufferedReader br = null;
String line = "";
String csvSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
for (; (line = br.readLine()) != null;) {
while ((line = br.readLine()) != null) {
// use comma as separator
String[] data = line.split(csvSplitBy);
if (data.length == 18) {
db_loader(data);
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done1");
}
public static void db_loader(String[] da) throws SQLException {
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
Properties props = new Properties();
props.setProperty("user", "dummy999");
props.setProperty("password", "dummy123");
Connection conn = DriverManager.getConnection(url, props);
PreparedStatement preStatement2 = conn
.prepareStatement("insert into TABLE_ORACLE (col1, col2, col3, col4) values (?, ?, ?, ?)");
for (int i = 0; i < da.length; i++) {
preStatement2.setString(i + 1, da[i]);
}
preStatement2.executeQuery();
preStatement2.close();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("done2");
}
}