为国际数据集实施区域设置

区域设置指定用户的语言、所在国家/地区以及任何特殊的可变首选项(例如排序规则)。Vertica 会根据区域设置确定某些字符串函数的行为。此外,区域设置还确定了需要进行排序和比较的各种 SQL 命令(例如聚合 GROUP BYORDER BY 子句、联接和分析 ORDER BY 子句)的排序规则。

Vertica 数据库的默认区域设置为 en_US@collation=binary(美国英语)。可以定义供数据库中的所有会话使用的新默认区域设置,也可以覆盖单个会话的区域设置。但是,无论会话排序规则如何,请始终采用默认 en_US@collation=binary 排序规则来对投影进行排序。特定区域设置的排序功能会在查询时应用。

如果您将区域设置设为 NULL,则 Vertica 会将区域设置设为 en_US_POSIX。您可以通过发出 vsql 元命令 \locale 将区域设置设回默认区域设置和排序规则。例如:

可以通过 ODBCJDBCADO.net 设置区域设置。

ICU 区域设置支持

Vertica 将 ICU 库用于区域设置支持;您必须使用 ICU 区域设置语法指定区域设置。数据库会话使用的区域设置并非来源于操作系统(通过 LANG 变量),因此 Vertica 建议您为运行 vsql 的每个节点设置 LANG,如下一个部分所述。

虽然 ICU 库可以指定排序规则、货币和日历首选项,但 Vertica 仅支持排序规则组件。与排序规则无关的任何关键字都将被拒绝。无论会话排序规则如何,始终使用 en_US@collation=binary 排序规则对投影进行排序。特定区域设置的排序功能会在查询时应用。

SET DATESTYLE TO ... 命令提供了日历的一些方面,但 Vertica 仅支持将美元作为货币。

为会话更改 DB 区域设置

此示例将会话区域设置设置为“泰语(Thai)”。

  1. 在操作系统级别,针对每个运行 vsql 的节点,按照以下方式将 LANG 变量设置为区域设置语言:

    export LANG=th_TH.UTF-8
    
  2. 针对每个 Vertica 会话(从 ODBC/JDBC 或 vsql 中),设置语言区域设置。

    从 vsql 中:

    \locale th_TH
    
  3. 从 ODBC/JDBC 中:

    "SET LOCALE TO th_TH;"
    
  4. 在 PUTTY(或 ssh 终端)中,按照以下步骤更改设置:

    settings > window > translation > UTF-8
    
  5. 单击应用 (Apply),然后单击保存 (Save)

加载的所有数据必须采用 UTF-8 格式而非 ISO 格式,如分隔数据中所述。与 UTF-8 不兼容的字符集(例如 ISO 8859-1 (Latin1))不受支持,因此 SUBSTRING 等函数对于多字节字符而言无法正常工作。因此,区域设置的设置应无法正常工作。如果转换设置 ISO-8859-11:2001 (Latin/Thai) 正常工作,则表示未正确加载数据。要正确转换数据,请使用一个实用程序,例如 Linux iconv

另请参阅