Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Механическая подстановка параметров в PreparedStatement при Insert

Anna | 4.06.2014 | нет комментариев
Приветствую, господа!
Сразу оговорюсь: в джаве, да и в целом в программировании, я новичок.

Вводная часть:

В наличии большое число хмл файлов(десятки терабайт).
В виде реляционного представления, один файл разливается на 90 таблиц.

В джаве, вставка происходит с поддержкой PreparedStatement с подстановкой параметров.
Дабы минимизировать задачи с продуктивностью на этом участке,
все PreparedStatement сгенерированы предварительно в виде Map<String,PreparedStatement>, где стринг это имя таблицы.
Парсинг хмл происходит с поддержкой XMLStreamReader.
Логика работы заключается в дальнейшем:
— Наткнулись на данные.
— Вставили поле в соответствующий PreparedStatement — pstmt.setXXX();
— Наткнулись на закрывающий тэг, исполняем execute.
— и так дальше

Пример DML:

insert into t1 (id, p2, p2, p4...p19) values (?,?,?,?,?...?)

Задача:
Не во всех хмл файлах встречаются все теги, а соответственно все поля.
и когда я делаю pstmt.execute(в последующем планировался executeBatch), происходит оплошность типа “Missing IN or OUT parameter at index:: 2“.
То есть он ругается на нехватку параметров.

Вопрос:
Собственно, как его принудить в пустые параметры подставить NULL автоматом?

Если это немыслимо, возможно стоит пересматривать архитектуру.
Применять такие решения, как PL/SQL на стороне сервера либо динамически генерировать PreparedStatement либо еще чего.
Первоначально ничего такого не планировалось по причине линейности загрузки и упора на продуктивность.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB