【发布时间】:2018-01-25 15:21:33
【问题描述】:
我有一个 CSV 文件,其布局如下:
在下面的代码中,如果我想在开始时获取没有空单元格和名称表的数据,我可以改进什么?
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();
}
}
}
【问题讨论】:
-
如果您不想插入空值,请检查值并忽略空值。如果一行的所有值都为空,您可能只想这样做。要忽略列名,您首先必须知道它们在哪一行。在您的情况下,它似乎是行/行,所以在读取文件时跳过它。
-
在其他 spreadsheat 中不好 wway 我有 3 个我不会迁移的单元格。这是2个细胞。所以
-
那么 - 有什么问题?忽略您不想导入的任何单元格/列/行。我们无法告诉您该怎么做,因为知道数据和要求的是您。
-
顺便说一句,你的代码很容易受到SQL injection 的攻击,所以除非你绝对知道数据来自哪里并相信来源,否则可能会发生坏事(比如删除你的数据库,删除你的所有数据)等)。
-
实际上他的解决方案是你的,只是对
arr[0] != null && arr[1] != null进行了检查,这也是我所说的。他承认这并不完美,但它应该让你开始。再次注意,我们不能也不会提供完整的解决方案。这是您的任务和工作,我们在这里帮助您完成所有工作。
标签: java database postgresql csv