#sql #database #h2
#sql #База данных #h2
Вопрос:
Я пытаюсь импортировать некоторые данные из Oracle в H2. У меня есть таблица с номером типа столбца (15,3) и вставить скрипт со значением ‘13253,124’ для этого столбца.
Проблема в том, что H2 не может распознать запятую как десятичный разделитель и не может вставить строку…
Есть ли способ сказать H2 «использовать запятую в качестве десятичного разделителя вместо точки»?
Спасибо
Комментарии:
1. Просто преобразуйте его при импорте (или попросите Oracle указать его с точкой)..
Ответ №1:
Вам нужно использовать точку или, что еще лучше, использовать PreparedStatement
with setBigDecimal
.
То, что вы пытаетесь, также не работает в Oracle с настройками по умолчанию. Я могу ошибаться, но я думаю, что это не работает ни с какой общей базой данных. Тестовый пример (с использованием SQLFiddle с Oracle):
create table test(x number(15,3));
insert into test values('13253,124');
-> invalid number : insert into test values('13253,124')
insert into test values(13253,124);
-> too many values : insert into test values(13253,124)
Комментарии:
1. ну, это был файл экспорта oracle sqldeveloper из базы данных oracle, содержащий запятую вместо точки для десятичного разделителя…
2. Хорошо, я предполагаю, что это ошибка экспорта Oracle SQLDeveloper.
3. Неправильно, в Oracle вы можете использовать оба десятичных разделителя, проверьте настройки NLS_NUMERIC_CHARACTERS в Oracle docs.oracle.com/cd/B19306_01/server.102/b14237 /…
4. @MikeAdamenko обратите внимание, что я написал «с настройками по умолчанию»
5. @ThomasMueller Ну, настройки по умолчанию для NLS_NUMERIC_CHARACTERS зависят от операционной системы