spring - Tomcat上部署WAR文件时,应该使用什么路径来定位SQL语句中使用的CSV文件(Load data local infile)

标签 spring maven tomcat war flyway

我一直在做 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/

相关文章:

spring - Tomcat 中的 LTPA token (Spring security)

java - Jersey REST-Servlet 中的 RolesAllowed 注释不起作用

java - RestTemplate 解码错误正文

javascript - 如何从 <select> 检索值并将其放入隐藏的 JSTL 中

java - docker centos :6. 6 镜像 "/bin/sh: java: command not found"java 已安装

java - 使用ant,查找与正则表达式匹配的文件

maven - 如何将外部jar添加到maven webapp项目

eclipse - 泽西休息服务 : 'Resource/Servers is not open'

java - Spring Scheduler 线程无法在 tomcat 中关闭

java - Spring 3 Java 配置 : Imported @Configuration not enhanced?