PostgreSQL
В этом разделе объясняется настройка подключения к цели PostgreSQL с использованием коннектора цели PostgreSQL. PostgreSQL можно использовать в качестве цели только в задаче репликации. Прежде чем подключаться к цели PostgreSQL, необходимо настроить Необходимые разрешения в базе данных. Если подключение к PostgreSQL осуществляется через Data Movement gateway, также требуется установить необходимый драйвер, как описано в Настройка драйвера.
Для получения дополнительной информации об ограничениях и замечаниях при использовании коннектора PostgreSQL см. раздел Ограничения и замечания.
Настройка свойств подключения
Чтобы настроить коннектор, выполните следующие действия:
- 
                        
В виде Подключения нажмите Создать подключение.
 - 
                        
Выберите коннектор цели PostgreSQL, а затем задайте следующие настройки.
 
Цель данных
- 
                        
Шлюз данных: При работе с Data Movement gateway выберите шлюз данных, с использованием которого будет тестироваться подключение к цели PostgreSQL. Это должен быть тот же шлюз, который использовался для доступа к источнику данных.
Примечание к информации- Это поле недоступно при использовании подписки Qlik Talend Cloud Starter, так как Data Movement gateway не поддерживается для этого уровня подписки.
 - 
                                    
Также необходимо установить соответствующий драйвер на компьютер с Data Movement gateway. Для получения подробных сведений см. Настройка драйвера ниже.
 
 - 
                        
Облачный поставщик: выберите один из следующих вариантов по ситуации:
- 
                                
«Нет» ― выберите при работе со следующими службами:
- PostgreSQL (локальная)
 - Amazon Aurora
 - Azure Database для PostgreSQL - Flexible Server
 - Нет Data Movement gateway
 
 - 
                                
Amazon RDS
Для Amazon RDS for PostgreSQL.
 - 
                                
Google Cloud ― выберите при работе со следующими службами:
- Google Cloud SQL for PostgreSQL
 - Google Cloud AlloyDB for PostgreSQL
 
 - 
                                
Microsoft Azure
Для Microsoft Azure Database for PostgreSQL.
 
 - 
                                
 - 
                        
Узел: имя сервера или IP-адрес компьютера, на котором установлена база данных PostgreSQL.
 - 
                        
Порт: порт, который должен использоваться при подключении к базе данных. Значение по умолчанию: 5432.
 
Свойства учетной записи (Account properties)
Имя пользователя и Пароль: имя и пароль пользователя для авторизованного доступа к базе данных сервера PostgreSQL.
Свойства базы данных
- 
                        
Имя базы данных: задать базу данных можно двумя способами:
- Способ 1: выбор из списка. Щелкните Загрузить базы данных, а затем выберите базу данных.
 - Способ 2: вручную. Выберите Ввести имя базы данных вручную, а затем введите имя базы данных.
 
 - Режим SSL: выберите одно из значений, указанных ниже.
- disable — подключение только с помощью фамилии и пароля.
 - allow — устанавливает подключение с шифрованием по запросу сервера.
 - prefer — это значение по умолчанию. Устанавливает подключение с шифрованием, если сервер поддерживает такие подключения, и переключается обратно на подключение без шифрования, если подключение с шифрованием не может быть установлено.
 - require — устанавливает подключение с шифрованием, если сервер поддерживает такие подключения. Если подключение с шифрованием не может быть установлено, попытка подключения завершается ошибкой.
 - verify-ca — аналогично значению require, но также проверяется сертификат центра сертификации (ЦС) сервера на соответствие настроенным сертификатам ЦС. устанавливает подключение с шифрованием, если сервер поддерживает такие подключения, и переключается обратно на подключение без шифрования, если подключение с шифрованием не может быть установлено.
 - verify-full — аналогично значению verify-ca, но также выполняется проверка удостоверения имени хоста путем сопоставления имени хоста, который клиент (т. е. Qlik Talend Data Integration) использует для подключения к серверу, с именем в удостоверении сертификата, который сервер отправляет клиенту. Клиент проверяет, совпадает ли имя хоста, который он использует для подключения, со значением Общее имя в сертификате сервера. Если имена не совпадают, попытка подключения завершается ошибкой.
 
 - Доверенный сертификат: файл сертификата клиента, выпущенного центром сертификации (ЦС), в формате PEM.
 - Сертификат клиента: загрузите сертификат клиента, запрашиваемый сервером.
 - Ключ сертификата клиента: файл закрытого ключа клиента в формате PEM.
 - CRL: сертификат CRL. Этот файл содержит сертификаты, отозванные центрами сертификации. Если сертификат сервера присутствует в этом списке, попытка подключения завершается ошибкой.
 - Сжатие SSL: выберите этот параметр для сжатия данных перед их шифрованием.
 - Максимальный размер файла (КБ): выберите или введите максимальный размер (в КБ) файла CSV, прежде чем он будет загружен в целевую базу данных PostgreSQL. Значение по умолчанию 32 000 КБ.
 
Внутренние свойства
Внутренние свойства предназначены для особых вариантов использования и поэтому не отображаются в диалоговом окне. Их можно использовать только по указанию службы поддержки Qlik.
Используйте кнопки  и 
 справа от полей, чтобы при необходимости добавить или удалить свойства.
Имя
Отображаемое имя подключения.
Условия
Необходимые разрешения
Пользователь, указанный в параметрах коннектора, должен быть зарегистрированным пользователем в базе данных PostgreSQL.
В дополнение к этому необходимо предоставить следующие права:
- Может войти
 - Создавать базы данных
 
Настройка драйвера
driver можно установить с помощью программы для установки драйверов (рекомендуется) или вручную. Ручную установку следует выполнять только в том маловероятном случае, если возникла проблема с программой для установки драйверов.
Использование программы для установки драйверов для установки драйвера
В этом разделе описывается процедура установки необходимого driverа. Она включает выполнение скрипта, который автоматически загружает, устанавливает и настраивает необходимый driver. Также можно выполнять скрипты для обновления и удаления driverа по необходимости.
Подготовка к установке
- 
                        
Убедитесь, что на сервере шлюза Data Movement установлена версия Python 3.6 или более поздняя.
Python предустанавливается в большинстве дистрибутивов Linux. Чтобы проверить, какая версия Python установлена в системе, выполните следующую команду:
python3 --version
 
Установка driver
Чтобы загрузить и установить driver, выполните следующие действия.
- 
                        
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
 - 
                        
Выполните следующую команду:
Синтаксис:
./install postgres
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду install postgres еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
 - 
                        
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
 - Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
 - Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
 
 - 
                        
Затем выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
 - Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
 - 
                                
Введите «v» и нажмите клавишу [Enter], чтобы снова открыть лицензионное соглашение для просмотра.
 
 
Будет установлен driver.
Обновление driverа
Выполните команду обновления, если требуется удалить предыдущие версии driverа перед установкой предоставленной версии driverа.
Чтобы загрузить и обновить driver, выполните следующие действия.
- 
                        
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
 - 
                        
Выполните следующую команду:
Синтаксис:
./update postgres
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду update postgres еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
 - 
                        
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
 - Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
 - Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
 
 - 
                        
Затем выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
 - Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
 - Введите «v» и нажмите клавишу [Enter], чтобы снова просмотреть лицензионное соглашение от начала.
 
 
Будет удален старый driver и установлен новый driver.
Удаление driverа
Выполните команду удаления, если требуется удалить driver.
Чтобы удалить driver, выполните следующие действия.
- 
                        
Остановите все задачи, использующие данный коннектор.
 - 
                        
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
 - 
                        
Выполните следующую команду:
Синтаксис:
./uninstall postgres
driver будет удален.
 
Установка драйверов и библиотек вручную
Установку driver вручную следует пытаться выполнить только в том случае, если автоматическая установка драйвера не завершилась успешно.
После установки Data Movement gateway загрузите следующие файлы RPM. Прямые ссылки для загрузки файлов можно найти в разделе binary-artifacts в /opt/qlik/gateway/movement/drivers/manifests/postgres.yaml. После завершения загрузки скопируйте файлы на компьютер Data Movement gateway.
Когда Data Movement gateway установлен в ОС Red Hat 9.x:
- postgresql<версия>-libs-<версия>PGDG.rhel9.x86_64.rpm
 - postgresql<версия>-<версия>PGDG.rhel9.x86_64.rpm
 - postgresql<версия>-odbc-<версия>PGDG.rhel8.x86_64.rpm
 
Когда Data Movement gateway установлен в ОС Red Hat 8.x:
- postgresql<версия>-libs-<версия>PGDG.rhel8.x86_64.rpm
 - postgresql<версия>-<версия>PGDG.rhel8.x86_64.rpm
 - postgresql<версия>-odbc-<версия>PGDG.rhel8.x86_64.rpm
 
На сервере Data Movement Gateway откройте приглашение оболочки и выполните действия, указанные ниже.
- 
                        
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
 - 
                        
Если нужно, подтвердите, что служба остановлена:
sudo systemctl status repagent
Статус должен быть следующим:
Active: inactive (dead) since <timestamp> ago
 - 
                        
Установите файлы RPM.
 - 
                        
Измените рабочий директорий на <Data Movement Gateway-Install-Dir>/bin.
 - 
                        
Скопируйте местоположение драйвера в файл site_arep_login.sh следующим образом:
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib:/usr/lib64:/usr/pgsql-<version>/lib" >> site_arep_login.sh
Таким образом драйвер будет добавлен к LD_LIBRARY_PATH, а в файле site_arep_login.sh будет сохранено местоположение драйвера.
 - 
                        
При необходимости подтвердите, что местоположение драйвера было скопировано:
cat site_arep_login.sh - 
                        
Проверьте, что в файле /etc/odbcinst.ini есть запись для PostgreSQL, как описано в этом примере:
[PostgreSQL]
Description = PostgreSQL ODBC driver
Driver = /usr/pgsql-13/lib/psqlodbc.so
Setup = /usr/pgsql-13/lib/psqlodbcw.so
UsageCount = 1
 - 
                        
Запустите службу Data Movement Gateway.
sudo systemctl start repagent
 - 
                        
Если нужно, подтвердите, что сервис запущен:
sudo systemctl status repagent
Статус должен быть следующим:
Active: active (running) since <timestamp> ago
 
Ограничения и замечания
При использовании PostgreSQL в качестве цели репликации действуют следующие ограничения:
- Не поддерживаются операции UPDATE (обновить) и DELETE (удалить) в таблицах без первичного ключа/уникального индекса, которые содержат повторяющиеся записи. Любые изменения в таких таблицах отражаются на всех записях в цели.
 - Таблицы со столбцом LOB не поддерживаются в режиме применения «Пакетная оптимизация». Когда столбец VARBINARY используется в качестве ключа исходной таблицы, в цели будет создан столбец BYTEA. Это приводит к непредсказуемому поведению в режиме применения изменений «Пакетная оптимизация». В качестве обходного решения рекомендуется использовать в SQLite функцию HEX для преобразования VARBINARY в VARCHAR.
 
Типы данных
Информация о собственном типе данных сохраняется и отображается в столбце Собственный тип данных в видах набора данных. Если этот столбец не отображается, необходимо открыть инструмент «Управление столбцами» в виде набора данных и выбрать столбец Собственный тип данных.
| Типы данных Qlik Cloud | Типы данных PostgreSQL | 
|---|---|
| 
                                     BOOL  | 
                                
                                     BOOL  | 
                            
| 
                                     BYTES  | 
                                
                                     BYTEA  | 
                            
| 
                                     DATE  | 
                                
                                     DATE  | 
                            
| 
                                     TIME  | 
                                
                                     TIME  | 
                            
| 
                                     DATETIME  | 
                                
                                     Если масштаб => 0 и =< 6, то: TIMESTAMP Если масштаб => 7 и =< 12, то: VARCHAR (37)  | 
                            
| 
                                     INT1  | 
                                
                                     SMALLINT  | 
                            
| 
                                     INT2  | 
                                
                                     SMALLINT  | 
                            
| 
                                     INT4  | 
                                
                                     INTEGER  | 
                            
| 
                                     INT8  | 
                                
                                     BIGINT  | 
                            
| 
                                     NUMERIC  | 
                                
                                     DECIMAL (P, S)  | 
                            
| 
                                     REAL4  | 
                                
                                     FLOAT4  | 
                            
| 
                                     REAL8  | 
                                
                                     FLOAT8  | 
                            
| 
                                     STRING  | 
                                
                                     Если длина 1 — 21845, то: VARCHAR (длина в байтах = значение STRING, умноженное на 3) Если длина 21846 — 2147483647, то: VARCHAR (65535)  | 
                            
| 
                                     UINT1  | 
                                
                                     SMALLINT  | 
                            
| 
                                     UINT2  | 
                                
                                     INTEGER  | 
                            
| 
                                     UINT4  | 
                                
                                     BIGINT  | 
                            
| 
                                     UINT8  | 
                                
                                     BIGINT  | 
                            
| 
                                     WSTRING  | 
                                
                                     Если длина 1 — 21845, то: VARCHAR (длина в байтах = значение WSTRING, умноженное на 3) Если длина 21846 — 2147483647, то: VARCHAR (65535)  | 
                            
| 
                                     BLOB  | 
                                
                                     BYTEA  | 
                            
| 
                                     NCLOB  | 
                                
                                     TEXT  | 
                            
| 
                                     CLOB  | 
                                
                                     TEXT  | 
                            
Типы данных при репликации из источника PostgreSQL
При репликации из источника PostgreSQL, целевая таблица будет создана с теми же типами данных для всех столбцов, кроме столбцы с определенными пользователем типами данных и с типом данных PostGIS. В таких случаях тип данных будет создаваться в цели «текст переменного размера».