Готовим "PostgreSQL Bulk Loader" на PDI
Сегодня разберемся как максимально быстро загрузить данные в Postgresql при помощи PDI. Это делается при помощи шага "PostgreSQL Bulk Loader". В статье разберем тонкости настройки вставки данных и сравним скорости вставки обычным методом и Bulk Loader.
Сам шаг «PostgreSQL Bulk Loader» требует указания пути до psql. Вот тут и начинаются проблемы с кодировкой. В источнике файл может иметь кодировку отличную от кодировки Postgresql. Основные проблемы:
- Данные в PDI двигаются в исходной кодировке. К примеру если файл имеет кодировку CP1251, то данные имеют кодировку CP1251.
- Заголовки имеют тоже названия в кодировке java машине. Обычно для Win систем CP1251.
- psql вставляет в кодировке БД (в моем случае UTF-8) при помощи вызова функции copy.
Имеем следующее:
- Postgresql кодировка UTF-8,
- исходный файл в кодировке CP1251.
Требуется привести все к кодировке UTF-8 и вставить в Postgresql.
Решение:
- Перекодируем CP1251 в кодировку UTF-8. Это можно сделать шагом “Select values” вкладка “Meta-data”.
- При запуске Spoon.bat или Spoon.sh вставкой дополнительного параметра "-Dfile.encoding=UTF-8".
- И вставим данные при помощи “PostgreSQL Bulk Loader”.
Более подробно в видео. (Загрузка/Download)
План видео (ссылка на youtube https://youtu.be/eAww-CzyQvs)
00:00 Введение
00:47 Загрузка файла с в кодировке CP-1251
02:26 Перекодирование потока данных.
03:35 Изменение кодировки в PDI. "-Dfile.encoding=UTF-8"
04:13 Вставка данных и замеры скорости.
06:56 Выводы
Выигрыш в скорости. Вставка данных обычным способом происходит в районе 20 000 строк в секунду. По сети вставка при помощи "PostgreSQL Bulk Loader" достигает 40 000 строк в секунду. А при вставке данных на localhost более 120 000. Получаем прирост в скорости от 2 до 6 раз.
Ссылки на материалы:
- PostgreSQL Bulk Loader http://wiki.pentaho.com/display/EAI/PostgreSQL+Bulk+Loader
- Select Values http://wiki.pentaho.com/display/EAI/Select+Values
- Подробности
- Опубликовано: 05 Апрель 2016
- Просмотров: 4122