Какой путь следует использовать для поиска файла «csv», используемого в операторе SQL (загрузка данных локального файла) Когда файл WAR развертывается на Tomcat - PullRequest
0 голосов
/ 17 марта 2019

Я работал над проектом весенней загрузки, в этом проекте я использую 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'

и некоторые другие комбинации, но не смог исправитьэта проблема

Ошибка: -------

Причина: java.sql.SQLException: Невозможно открыть файл '../../insertData/subject.csv'for «LOAD DATA LOCAL INFILE» команда. Вследствие основного IOException:

BEGIN NESTED EXCEPTION
java.io.FileNotFoundException MESSAGE: .... \ insertData \ subject.csv (система не может найти указанный путь) STACKTRACE: java.io.FileNotFoundException: .... \ insertData \ subject.csv (система не может найти указанный путь)

1 Ответ

0 голосов
/ 21 марта 2019

Вместо написания сценария SQL вы можете использовать миграцию на основе Java для чтения и вставки данных в таблицу.Вы можете использовать свойство «flyway.locations», чтобы указать путь для миграции на основе Java в вашем application.properties.В качестве пролетного пути по умолчанию ищите «./db/migration» ресурсов.Для более подробной информации проверьте https://flywaydb.org/documentation/migrations#java-based-migrations

...