Настройка источников в unixODBC
MySQL

Для MySQL в CentOS уже имеется установленный пакет mysql-connector-odbc.

Файл /etc/odbcinst.ini:

[PostgreSQL]
Description=ODBC for PostgreSQL
Driver=/usr/lib/psqlodbcw.so
Setup=/usr/lib/libodbcpsqlS.so
Driver64=/usr/lib64/psqlodbcw.so
Setup64=/usr/lib64/libodbcpsqlS.so
FileUsage=1

[MySQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
Setup=/usr/lib/libodbcmyS.so
Driver64=/usr/lib64/libmyodbc5.so
Setup64=/usr/lib64/libodbcmyS.so
FileUsage=1

Файл ~/.odbc.ini:

[Postgres_DSN]
Description = PostgreSQL test database
Driver      = /usr/lib64/psqlodbcw.so
Servername  = 10.0.0.99
Port        = 54320
Database    = pa_test
User        = pa_test
[MySQL_DSN]
Descrition  = My SQL test database
Driver      = /usr/lib64/libmyodbc5.so
Server      = 10.0.0.99
Port        = 33060
Database    = pa_test
User        = pa_test

Пакет mysql-connector-odbc Версии 8 имеется в другом репозитории.

Подробную инструкцию по добавлению репозитория см. здесь.

Для добавления репозитория используйте пакет mysql-community-release.

В файле ~/.odbc.ini, замените следующую строку:

Driver      = /usr/lib64/libmyodbc8w.so
Oracle

Загрузите пакеты Версии 19.3.0.0.0 отсюда:

  • Базовый (Basic) пакет (зависимость для ODBC)

  • Пакет ODBC

  • Пакет SQL*Plus (дополнительно для утилиты sqlplus)

Ниже приведен пример установки пакета (Basic):

wget https://download.oracle.com/otn_software/linux/instantclient/193000/oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm
yum install ./oracle-instantclient19.3-basic-19.3.0.0.0-1.x86_64.rpm

Для загрузки Oracle Instant Client ODBC см. инструкцию:

Для предварительной настройки выполните вызов слегка модифицированного конфигурационного скрипта (при обработке параметра $1 результат заменяется на ODBCDM_HOME=""):

/usr/lib/oracle/19.3/client64/bin/odbc_update_ini.sh "/" "/usr/lib/oracle/19.3/client64/lib" "Oracle 19 ODBC driver" "OracleODBC-19" "/home/jenkins/.odbc.ini"

В результате мы получили дополненные файлы и изменили их в соответствии с настройками базы.

File /etc/odbcinst.ini:

[Oracle 19 ODBC driver]
Description     = Oracle ODBC driver for Oracle 19
Driver          = /usr/lib/oracle/19.3/client64/lib/libsqora.so.19.1
Setup           =
FileUsage       =
CPTimeout       =
CPReuse         =
Файл ~/.odbc.ini:

[OracleODBC-19]
AggregateSQLType = FLOAT
Application Attributes = T
Attributes = W
BatchAutocommitMode = IfAllSuccessful
BindAsFLOAT = F
CacheBufferSize = 20
CloseCursor = F
DisableDPM = F
DisableMTS = T
DisableRULEHint = T
Driver = /usr/lib/oracle/19.3/client64/lib/libsqora.so.19.1
DSN = OracleODBC-19
EXECSchemaOpt =
EXECSyntax = T
Failover = T
FailoverDelay = 10
FailoverRetryCount = 10
FetchBufferSize = 64000
ForceWCHAR = F
LobPrefetchSize = 8192
Lobs = T
Longs = T
MaxLargeData = 0
MaxTokenSize = 8192
MetadataIdDefault = F
QueryTimeout = T
ResultSets = T
ServerName = //10.0.0.99:1521/orcl
SQLGetData extensions = F
SQLTranslateErrors = F
StatementCache = F
Translation DLL =
Translation Option = 0
UseOCIDescribeAny = F
UserID = pa_test
Password = pa_test
Подключение unixODBC:
isql -v OracleODBC-19

Подключение к Sql*plus:

sqlplus64 pa_test/pa_test@10.0.0.99:1521/orcl

Файл ~/.tnsnames.ora

SERVER_DBORACLE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.0.99)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
)

Для ~/.tnsnames.ora, можно заменить 10.0.0.99:1521/orcl на SERVER_DBORACLE.

В ~/.odbc.ini:

 ServerName = SERVER_DBORACLE

Подключение к Sql*plus:

sqlplus64 pa_test/pa_test@SERVER_DBORACLE
Установка и настройка MS SQL Server (провайдер ODBC)

В следующем примере MS SQL Server был установлен на другой узел во избежание конфликтов в пакете unixODBC из разных репозиториев.

Настройте репозиторий:

curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo

Установите необходимые пакеты:

sudo ACCEPT_EULA=Y yum install -y msodbcsql17
sudo ACCEPT_EULA=Y yum install -y mssql-tools
sudo yum install -y unixODBC

После установки пакетов файл /etc/odbcinst.ini содержит:

[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1
UsageCount=1

Далее установите источники данных.

Файл ~/.odbc.ini:

[MSSQLTest]
Driver   = /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1
Server   = tcp:10.0.0.99,14330

Подключение к unixODBC:

isql -v MSSQLTest pa_test pa_test

Запрос

SELECT Mpg, Cylinders, Displacement, Power, Weight, Acceleration, [Year], Origin, Model FROM pa_test.dbo.CarData;

выполнен успешно.

Vertica

Загрузите пакеты Vertica 9.1.x (RPM - ODBC, JDBC, Python и vsql) отсюда.

Пример установки пакета:

wget https://www.vertica.com/client_drivers/9.1.x/9.1.1-0/vertica-client-9.1.1-0.x86_64.rpm
yum -y install ./vertica-client-9.1.1-0.x86_64.rpm

См. инструкцию по созданию ODBC DSN.

Файл /etc/odbcinst.ini:

[Vertica]
Description = Vertica ODBC Driver
Driver = /opt/vertica/lib64/libverticaodbc.so

Файл ~/.odbc.ini:

[VMart]
Description = Vmart Database
Driver = /opt/vertica/lib64/libverticaodbc.so
Database = pa_test
Servername = 10.0.0.98
UID = pa_test
PWD = pa_test
Port = 54330
PostgreSQL

Установите следующие пакеты для соединения ODBC с PostgreSQL:

sudo yum install unixODBC unixODBC-devel
sudo yum install postgresql-odbc

Найдите настройки для драйверов ODBC в /etc/odbcinst.ini. После установки файл содержит следующее:

# Example driver definitions

# Driver from the postgresql-odbc package
# Setup from the unixODBC package
[PostgreSQL]
Description	= ODBC for PostgreSQL
Driver		= /usr/lib/psqlodbcw.so
Setup		= /usr/lib/libodbcpsqlS.so
Driver64	= /usr/lib64/psqlodbcw.so
Setup64		= /usr/lib64/libodbcpsqlS.so
FileUsage	= 1


# Driver from the mysql-connector-odbc package
# Setup from the unixODBC package
[MySQL]
Description	= ODBC for MySQL
Driver		= /usr/lib/libmyodbc5.so
Setup		= /usr/lib/libodbcmyS.so
Driver64	= /usr/lib64/libmyodbc5.so
Setup64		= /usr/lib64/libodbcmyS.so
FileUsage	= 1

Настройте системный DSN в /etc/odbc.ini и настройте пользовательский DSN в /home/.odbc.ini. Файл содержит:

[TEST_DSN]
Description = PostgreSQL test database
Driver      = /usr/lib64/psqlodbcw.so
Servername  = proliant
Port        = 5432
Database    = pa_panyusko
User        = pa_test_libpq
Password    = *******
ClickHouse

Для начала необходимо скачать и распаковать архив ClickHouse. Для нашего примера мы будем использовать Релиз 1.2.1.20220905.

Используйте права суперпользователя для выполнения следующих команд:

curl -sL -o tmp.zip https://github.com/ClickHouse/clickhouse-odbc/releases/download/v1.2.1.20220905/clickhouse-odbc-linux.zip

unzip -p tmp.zip clickhouse-odbc-1.2.1-Linux.tar.gz | tar -C /usr/local --strip-components=1 -xzvf -rm -f tmp.zip

В противном случае используйте sudo перед tar.

Найдите конфигурацию для драйверов ODBC в "~/odbcinst.ini" или "/etc/odbcinst.ini`. После установки содержимое файла будет следующим:

[ODBC Drivers]
ClickHouse ODBC Driver (ANSI)    = Installed
ClickHouse ODBC Driver (Unicode) = Installed

[ClickHouse ODBC Driver (ANSI)]
Description = ODBC Driver (ANSI) for ClickHouse
Driver      = /usr/local/lib64/libclickhouseodbc.so
Setup       = /usr/local/lib64/libclickhouseodbc.so
UsageCount  = 1

[ClickHouse ODBC Driver (Unicode)]
Description = ODBC Driver (Unicode) for ClickHouse
Driver      = /usr/local/lib64/libclickhouseodbcw.so
Setup       = /usr/local/lib64/libclickhouseodbcw.so
UsageCount  = 1

Задайте конфигурацию DSN в файле ~/.odbc.ini или /etc/odbc.ini:

[ODBC Data Sources]
ClickHouse DSN (ANSI)    = ClickHouse ODBC Driver (ANSI)
ClickHouse DSN (Unicode) = ClickHouse ODBC Driver (Unicode)

[ClickHouse DSN (ANSI)]
Driver      = ClickHouse ODBC Driver (ANSI)
Description = DSN (localhost) for ClickHouse ODBC Driver (ANSI)

### New all-in one way to specify connection with [optional] settings:
# Url = https://default:password@localhost:8443/query?database=default&max_result_bytes=4000000&buffer_size=3000000

# ...or minimal (will connect to port 8443 if protocol is "https://" or 8123 if it is "http://"):
# Url = https://localhost

### Old way:
# Server = localhost
# Database = default
# UID = default
# PWD = password
# Port = 8123
# Proto = http

# Timeout for http queries to ClickHouse server (default is 30 seconds)
# Timeout=60

# SSLMode:
#   allow   - ignore self-signed and bad certificates
#   require - check certificates (and fail connection if something wrong)
# SSLMode = require
# PrivateKeyFile =
# CertificateFile =
# CALocation =

# DriverLog = yes
# DriverLogFile = /tmp/chlickhouse-odbc-driver.log

[ClickHouse DSN (Unicode)]
Driver      = ClickHouse ODBC Driver (Unicode)
Description = DSN (localhost) for ClickHouse ODBC Driver (Unicode)
# ...

Затем используйте следующую команду для подключения:

isql -v "ClickHouse DSN (Unicode)"