[英]Confusion with File instance function in Java: How to import an arbitrary .csv file into mysql instead of a specific one?
我目前已经有将特定的.csv文件(提供的目录)导入mysql的代码。
我正在尝试对其进行调整,并尝试使用Java教程(即Java)中演示的create File()方法。 File file = new File("d:\\\\myproject\\\\java\\\\Hello.java");
并修改代码如下:
我的代码如下所示:
import java.sql.Connection;
import java.sql.Statement;
import java.io.*;
public class ImportCsv {
public static void main(String[] args) {
ImportCsv.readCsvUsingLoad();
}
public static void readCsvUsingLoad() {
try (Connection connection = DBConnection.getConnection()) {
File file = new File("C:/Users/User/Desktop/Test/upload2.csv");
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();
}
}
}
但是,Intellij不断抛出FileNotFoundException。
我在这里误解了文件实例创建的用法吗?
因为您将文件名用作字符串"file"
您必须删除两个引号,并且不需要创建文件,所以只需要path
(字符串):
String file = "C:/Users/User/Desktop/Test/upload2.csv";
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)";
可以像这样使用getAbsolutePath
另一种方式:
File file = new File("C:/Users/User/Desktop/Test/upload2.csv");
String path = file.getAbsolutePath();
String loadQuery = "LOAD DATA LOCAL INFILE '" + path + "' "
//---------------------------------------^^
+ "INTO TABLE txn_tbl FIELDS TERMINATED BY ',' "
+ "LINES TERMINATED BY '\n' "
+ "IGNORE 1 LINES(txn_amount, card_number, terminal_id)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.