为 Linux 创建 ODBC DSN

在 Linux 和其他类 UNIX 平台上,您可以在文本文件中定义 DSN。客户端的驱动程序管理器会读取该文件,以确定如何连接到 Vertica 数据库。驱动程序管理器通常在以下两个位置查找 DSN 定义:

  • /etc/odbc.ini

  • ~/.odbc.ini (用户主目录中名为 .odbc.ini 的文件)

用户必须能够读取 odbc.ini 文件,才能使用它连接到数据库。如果使用全局 odbc.ini 文件,请考虑创建一个对该文件具有读取权限的 UNIX 组。然后,将需要使用 DSN 的用户添加到该组。

这些文件的结构是相同的,只是所在位置不同而已。如果这两个文件都存在,则 ~/.odbc.ini 文件通常会替代系统范围 /etc/odbc.ini 文件。

odbc.ini 文件结构

odbc.ini 是一个包含以下两种类型的行的文本文件:

  • 节定义,是用方括号括起来的文本字符串。

  • 参数定义,其中依次包含参数名称、等号 (=) 和参数值。

文件的第一节始终名为 [ODBC Data Sources],其中包含 odbc.ini 文件所定义的所有 DSN 的列表。此节中的参数是 DSN 的名称,这些参数稍后在文件中显示为节定义。值是 DSN 的文本描述,并不起任何作用。例如,定义了名为 Vertica DSN 的单个 DSN 的 odbc.ini 文件可能包含以下 ODBC 数据源节:

[ODBC Data Sources]
VerticaDSN = "vmartdb"

显示在 ODBC 数据源节之后的节定义了每个 DSN。DSN 节的名称必须与 ODBC 数据源节中定义的名称之一匹配。

配置 odbc.ini 文件:

若要创建或编辑 DSN 定义文件,请执行下列操作:

  1. 使用所选文本编辑器打开 odbc.ini~/.odbc.ini

  2. 创建 ODBC 数据源节并定义参数:

    • 其名称是要创建的 DSN 的名称

    • 其值是 DSN 的描述

    例如,若要创建名为 VMart 的 DSN,您应输入以下命令:

    [ODBC Data Sources]
    VMart = "VMart database on Vertica"
    
  3. 创建名称与您在步骤 2 中定义的 DSN 名称匹配的节。在此节中,您应添加定义了 DSN 的设置的参数。最常定义的参数如下:

    • Description – 有关数据源的附加信息。

    • Driver – Vertica ODBC 驱动程序的位置和指定,或 odbcinst.ini 文件中定义的驱动程序的名称(请参阅下文)。为了确保将来的兼容性,请使用库目录(而非库文件)中的符号链接的名称:

      • /opt/vertica/lib(在 32 位客户端上)

      • /opt/vertica/lib64,(在 64 位客户端上)

      例如,64 位 ODBC 驱动程序库的符号链接是:

      /opt/vertica/lib64/libverticaodbc.so
      

      符号链接始终指向最新版本的 Vertica 客户端 ODBC 库。请使用此链接,以便不需要在更新客户端驱动程序后更新所有 DSN。

    • Database – 在服务器中运行的数据库的名称。此示例使用 vmartdb 来表示 vmartdb。

    • ServerName — 安装了 Vertica 的服务器的名称。如果 Vertica 已安装在同一台计算机上,则使用 localhost。

      您可以提供 IPv4 地址、IPv6 地址或主机名。

      在 IPv4/IPv6 混合网络中,DNS 服务器配置决定了哪个 IP 版本地址最先发送。可使用 PreferredAddressFamily 选项来强制连接使用 IPv4 或 IPv6。

    • UID — 数据库超级用户(名称与数据库管理员帐户相同)或超级用户已创建并向其授予了权限的用户。此示例使用用户名 dbadmin。

    • PWD — 指定的用户名的密码。此示例将密码字段留空。

    • Port — Vertica 用来侦听 ODBC 连接的端口号。例如,5433。

    • ConnSettings — 可以包含用分号分隔的 SQL 命令。这些命令可以在连接到服务器之后立即运行。

    • SSLKeyFile — 客户端私钥的文件路径和名称。此文件可以驻留在系统上的任意位置。

    • SSLCertFile — 客户端公用证书的文件路径和名称。此文件可以驻留在系统上的任意位置。

    • Locale — 用于会话的默认区域设置。默认情况下,数据库的区域设置是:en_US@collation=binary (English as in the United States of America)。将区域设置指定为 ICU 区域设置。有关可用于指定区域设置的完整参数列表,请参阅 ICU 用户指南 (http://userguide.icu-project.org/locale)。

    • PreferredAddressFamily

      如果客户端和服务器都有 IPv4 和 IPv6 地址而且您已经提供了主机名时要使用的 IP 版本,则使用的 IP 版本是以下之一:

      • ipv4:使用 IPv4 连接到服务器。

      • ipv6:使用 IPv6 连接到服务器。

      • none:使用 DNS 服务器提供的 IP 地址。

例如:

[VMart]
Description = Vmart Database
Driver = /opt/vertica/lib64/libverticaodbc.so
Database = vmartdb
Servername = host01
UID = dbadmin
PWD =
Port = 5433
ConnSettings =
AutoCommit = 0
SSLKeyFile = /home/dbadmin/client.key
SSLCertFile = /home/dbadmin/client.crt
Locale = en_US@collation=binary

有关包括 Vertica 特定参数的完整参数列表,请参阅 ODBC DSN 连接属性

使用 odbcinst.ini 文件

您可以使用在 odbcinst.ini 文件中定义的驱动程序的名称,而不必在 DSN 定义中指定 ODBC 驱动程序库的路径。如果您有许多 DSN 并且经常需要更新这些 DSN 以指向新的驱动程序库,则此方法很有用。使用此方法,您还可以设置一些其他 ODBC 参数,例如线程模型。

odbc.ini 文件一样,odbcinst.ini 文件中也包含一些节。每个节定义了可在 odbc.ini 文件中引用的 ODBC 驱动程序。

在一个节中,您可以定义以下参数:

  • Description — 有关数据源的附加信息。

  • Driver — Vertica ODBC 驱动程序的位置和指定,例如 /opt/vertica/lib64/libverticaodbc.so

例如:

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

然后,在 odbc.ini 文件中,您可以使用已在 odbcinst.ini 文件中创建的节(描述了要使用的驱动程序)的名称。例如:

[VMart]
Description = Vertica Vmart database
Driver = Vertica

如果使用的是 unixODBC 驱动程序管理器,您还应添加一个 ODBC 节以替代其标准线程设置。默认情况下,unixODBC 通过 ODBC 将所有 SQL 调用序列化,这样可以阻止多个并行加载。若要更改其默认行为,请将以下行添加到 odbcinst.ini 文件中:

[ODBC]
Threading = 1

配置其他 ODBC 设置

在 Linux 和 UNIX 系统上,您需要先配置一些其他驱动程序设置,然后才能使用 DSN。有关详细信息,请参阅ODBC 驱动程序设置