Я новичок в программировании и Java. Поэтому, когда я запустил свой Java-код, я получил следующие ошибки. Я понимаю, что моя таблица Oracle имеет уникальное ограничение, поэтому как мне прочитать только отдельное значение, чтобы, когда оно записывается в таблицу, оно не выдавало мне уникальной ошибки ограничения? Когда я попытался временно отключить ограничение, все работает нормально. Но я не должен переделывать стол. Итак, мне нужно выяснить, как читать ТОЛЬКО отдельные записи из файла CSV и записывать их в базу данных.
PS: Это легко сделать в базе данных, вот мой псевдокод: INSERT INTO TABLE_ORACLE (Col1, Col2, Col3, Col4) SELECT DISTINCT Col1, Col2, Col3, Col4 FROM TABLE_CSV
Большое спасибо!!
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");
}
}