为 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 驱动程序设置。