Java 在将数据从csv文件迁移到数据库时,我应该在代码中改进什么
我有一个具有以下布局的CSV文件: 在我下面的代码中,如果我想在开始时获得没有空单元格和名称表的数据,我可以改进什么Java 在将数据从csv文件迁移到数据库时,我应该在代码中改进什么,java,database,postgresql,csv,Java,Database,Postgresql,Csv,我有一个具有以下布局的CSV文件: 在我下面的代码中,如果我想在开始时获得没有空单元格和名称表的数据,我可以改进什么 public static void main(String[] args) { String path = "C:\\Users\\\\Desktop\\project\\x.csv"; File file = new File(path); Connection connect = null; Stateme
public static void main(String[] args) {
String path = "C:\\Users\\\\Desktop\\project\\x.csv";
File file = new File(path);
Connection connect = null;
Statement s = null;
try {
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
try {
Class.forName("org.postgresql.Driver");
connect = DriverManager.getConnection("jdbc:postgresql://johnny.heliohost.org:5432/hostdb_allotments" +
"?user=hostdb_administrator&password=");
s = connect.createStatement();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while ((line = br.readLine()) != null) {
try {
String[] arr = line.split(",");
String sql = "INSERT INTO Dzialki " +
"(Nr_dzialki, Powierzchnia) " +
"VALUES ('" + arr[0] + "','" + arr[1] + "') ";
s.execute(sql);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Import success!");
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
将文件内容直接读入sql语句对我来说似乎是个坏主意。但现在添加空检查可以解决这个问题:
while ((line = br.readLine()) != null) {
try {
String[] arr = line.split(",");
if(arr[0] != null && arr[1] != null) {
String sql = "INSERT INTO Dzialki " +
"(Nr_dzialki, Powierzchnia) " +
"VALUES ('" + arr[0] + "','" + arr[1] + "') ";
s.execute(sql);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Import success!");
}
如果不想插入空值,请检查这些值并忽略空值。您可能只想在一行的所有值都为null时执行此操作。要忽略列名,首先必须知道它们在哪一行。在您的情况下,它似乎是第1行,所以在读取文件时跳过。在其他表格中不太好,因为我有3个单元格,我不会迁移。这是2个单元格。索索-有什么问题?忽略任何不希望导入的单元格/列/行。我们不能告诉你该怎么做,因为只有你知道数据和需求。顺便说一句,你的代码容易受到攻击,因此除非你完全知道数据来自何处并相信源代码,否则可能会发生不好的事情(如删除数据库、删除所有数据等)。实际上,他的解决方案是你的,只需对
arr[0]!=空(&arr[1]!=null,这也是我所说的。他承认这并不完美,但应该让你开始。再次注意,我们不能也不会提供完整的解决方案。这是你的任务和工作,我们在这里帮助你,而不是为你做所有的工作。