Как получить доступ к CSV-файлу в WAR, используя функцию / запрос H2 CSVREAD ()? - PullRequest
4 голосов
/ 24 января 2011

Я пытаюсь прочитать файл CSV из веб-приложения (Tomcat 5.5.x), и все, что я получаю, это 'FileNotFoundExceptions's:

dbStatement.executeQuery("SELECT * FROM CSVREAD('csvfile.csv');");

Я не думаю, что могу / нужно указывать абсолютный путь (он будет развернут на сервере Linux / Tomcat, к которому у меня не будет доступа), и я не уверен в необходимости протокола файла ('jar: file' , classpath: и т. д.).

Файл находится в папке "** / WEB-INF / classes / csvfile.csv"

Любые идеи о структуре пути, который мне нужно передать в CSVREAD ()?

Спасибо

Рич

Ответы [ 2 ]

2 голосов
/ 25 января 2011

Возможно, вы могли бы попытаться динамически построить запрос, сначала получив полный путь с помощью ServletContext.getRealPath("/WEB-INF/classes/csvfile.csv").

1 голос
/ 25 января 2011

H2 в настоящее время не поддерживает загрузку файлов из classpath.Однако вы должны иметь возможность получить URL-адрес ресурса, используя:

String url = getClass().getClassLoader().getResource("csvfile.csv").toString();

И затем вы можете использовать этот URL-адрес (в моем случае это URL-адрес, начинающийся с «file:») следующим образом:

dbStatement.executeQuery("SELECT * FROM CSVREAD('" + url + "');");

(однако я не проверял это в веб-приложении)

...