【发布时间】:2018-02-26 11:42:30
【问题描述】:
我目前有一个简单的程序,可以像这样将数据插入到 mysql 数据库表中:
System.out.println("New path created: " + newPath);
String newPathfinal = newPath.toString();
try (Connection connection = DBConnection.getConnection())
{
String file = "C:/Users/User/Desktop/Test/" + newPathfinal;
String loadQuery = "LOAD DATA LOCAL INFILE '" + file + "' INTO TABLE txn_tbl FIELDS TERMINATED BY ','"
+ " LINES TERMINATED BY '\n' " + "IGNORE 1 LINES(txn_amount, card_number, terminal_id)";
System.out.println(loadQuery);
Statement stmt = connection.createStatement();
stmt.execute(loadQuery);
System.out.println("Data import success");
}
catch (Exception e)
{
e.printStackTrace();
}
但是传入文件的名称和内容各不相同(列不同),所以我想按名称将文件过滤到不同的 LOAD DATA LOCAL INFILE 命令中,以便可以正确插入数据。
我一直在考虑使用简单的 if-else 语句,因为我将文件名规定为字符串,但我意识到 if-else 语句将完整的文件名作为条件,这在我想要的情况下不起作用按部分文件名过滤。像这样:if(newPathfinal == “apple" {} 我希望将所有包含单词“apple”的文件导入到某个表中。
例如,假设我想将名称以“java”开头的文件(如 java_1)导入 mySQL 表 java1。并将名为“apple”的文件(如 apple_1)放入 apple1。 java_2 和 apple_2 继续被导入,我需要将它们相应地过滤到正确的 LOAD DATA LOCAL INFILE 语句中,以将它们的数据插入到正确的表中。
有什么方法可以按部分文件名过滤吗?我阅读了 jfilechooser 和 fileFilter 但这些似乎集中在文件扩展名上,这不是我关注的领域,因为文件都是相同的 .csv 格式。
再次感谢!
【问题讨论】:
-
所以您只想更改您的
if(newPathfinal == “行以按部分名称过滤,差不多吗? -
是的!我的困惑是我很确定 if-else 循环仅适用于全名,即。必须是 apple.csv 但不是 apple_1.csv。对不起,我忘了删除不完整的 IF 语句
-
随意编辑该行。
-
我找到了一个可能有帮助的链接,它是子字符串:stackoverflow.com/questions/15402101/… 我会阅读此内容并在此处报告是否有效!
-
子字符串会起作用,就像我的回答一样。
标签: java mysql csv intellij-idea java-io