为 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 驱动程序管理器的文档。odbc.ini 文件结构
odbc.ini
是一个包含以下两种类型的行的文本文件:
-
节定义,是用方括号括起来的文本字符串。
-
参数定义,其中依次包含参数名称、等号 (=) 和参数值。
当心
unixODBC 驱动程序管理器支持odbc.ini
中最多 1000 个字符的参数值。如果您的参数值大于 1000 个字符(例如 OAuthAccessToken),则必须通过 连接字符串 传递它,而不是在 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 定义文件,请执行下列操作:
-
使用所选文本编辑器打开
odbc.ini
或~/.odbc.ini
。 -
创建 ODBC 数据源节并定义参数:
-
其名称是要创建的 DSN 的名称
-
其值是 DSN 的描述
例如,若要创建名为 VMart 的 DSN,您应输入以下命令:
[ODBC Data Sources] VMart = "VMart database on Vertica"
-
-
创建名称与您在步骤 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 驱动程序设置。