выберите имя столбца из H2 со столбцами, содержащими пробелы


Я пытаюсь выполнить запрос из файла с разделителями табуляции с помощью H2 и java. Когда I select * нет никаких проблем, однако, один из столбцов имеет пробел в имени столбца. Когда я пытаюсь запросить только этот столбец, я получаю исключение:

Caused by: org.h2.jdbc.JdbcSQLException: Column "EXAMPLE" not found; SQL statement:

Создается впечатление, что он не захватывает оба слова в имени столбца (пример ColumnName), а только захватывает первое.

Вот что у меня есть:

System.out.println( simpleJdbcTemplate.queryForList( "SELECT Example ColumnName FROM CSVREAD('" + fileName
                + "', null,'UTF-8', chr(9)) where send = 1;", new Object[] {} ) );

Я предполагаю, что для этого есть специальный синтаксис, но я не могу этого сделать. найти ее. Я пытался заключить имя столбца в квадратные скобки, одинарные кавычки, двойные кавычки, галочки-все безрезультатно.

Есть ли способ запросить H2, используя столбцы, которые имеют пробелы в имени?

2 2

2 ответа:

Согласно документации , двойные кавычки должны сделать трюк. Не забудьте правильно экранировать их в Java, то есть просто сохранить имя столбца в String, Используйте

String exampleColumnName = "\"Example ColumnName\"";

Кроме того, обратите внимание, что он чувствителен к регистру, из документации:

Имена в кавычках чувствительны к регистру

Вы также можете использовать скобки [] , если в свойствах соединения задано значение "MODE=MSSQLServer". Пример:

SELECT * FROM [My Table]

Строка соединения будет выглядеть примерно так:

jdbc:h2:~/test;MODE=MSSQLServer