Чтение нескольких CSV-файлов с CsvJdbc
Мне нужно связать группу файла CSV в формате "ГГГГ-ММ-ДД чч: мм: сс.csv", которые присутствуют в той же папке с уникальной таблицей, которая содержит все данные, присутствующие во всех файлах.
Мне нужно прочитать данные из приложения Java EE, поэтому я хотел бы создать пул соединений на сервере приложений. Я нашел драйвер CsvJdbc, который позволяет читать несколько файлов как один объект. Хорошей отправной точкой была эта страница в разделе с этим абзацем:
Чтобы прочитать несколько файлов (например, файлы ежедневного журнала) как одну таблицу, установите свойство соединения с базой данных indexedFiles. Следующий пример демонстрирует, как это сделать.
Пример может подойти для меня, но проблема в том, что у меня нет слова заголовка в строке имени файла. Таким образом, соответствующая таблица становится пустой строкой, что делает невозможным запрос к таблице.
Как я могу сказать драйверу сопоставить шаблон с таблицей, которая не имеет части заголовка?
PS Я уже пытался использовать hsqldb в качестве интерфейса для файлов CSV, но он не поддерживает несколько файлов.
1 ответ
Настройте CsvJdbc для чтения нескольких файлов, как описано в http://csvjdbc.sourceforge.net/doc.html а затем используйте пустое имя таблицы в запросе SQL, поскольку имена файлов CSV не имеют заголовка перед регулярным выражением fileTailPattern. Например:
props.put("fileTailPattern", "(\\d+)-(\\d+)-(\\d+) (\\d+):(\\d+):(\\d+)");
props.put("fileTailParts", "Year,Month,Day,Hour,Minutes,Seconds");
...
ResultSet results = stmt.executeQuery("SELECT * FROM \"\" AS T1");