我一直在做 Spring Boot 项目,我在这个项目中使用 Flyway 进行数据库版本控制。在迁移文件夹中,有一些 SQL 文件具有“Load data local infile”语句 - 引用了一些 CSV 文件。
例子:
load data local infile 'C:/Program Files (x86)/Apache Software Foundation/Tomcat 8.5/webapps/originator/WEB-INF/classes/insertData/subject.csv' INTO TABLE subject
如何使这条路径成为相对路径? 我试过了
'./classes/insertData/subject.csv'
'./insertData/subject.csv'
还有一些其他组合也无法解决这个问题
错误:
Caused by: java.sql.SQLException: Unable to open file '../../insertData/subject.csv'for 'LOAD DATA LOCAL INFILE' command.Due to underlying IOException:
BEGIN NESTED EXCEPTION java.io.FileNotFoundException MESSAGE: ....\insertData\subject.csv (The system cannot find the path specified) STACKTRACE: java.io.FileNotFoundException: ....\insertData\subject.csv (The system cannot find the path specified)
最佳答案
我能够在从资源路径进行的飞路迁移中将数据从 CSV 文件插入到表中。在迁移脚本中,我使用了如下所示的整个路径。
LOAD DATA LOCAL INFILE './src/main/resources/<FOLDER>/<FILE>.csv' INTO TABLE <TABLE_NAME>
FIELDS TERMINATED BY ','
optionally enclosed by '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES;
其他语句将取决于您的文件结构我只想包括整个示例。
关于spring - Tomcat上部署WAR文件时,应该使用什么路径来定位SQL语句中使用的CSV文件(Load data local infile),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55209932/