安装 DB SQL Extension Toolkit

可以在 Db2 环境中安装 DB SQL Extension Toolkit 以添加各种功能,例如,执行 XML 处理、比较、散列法以及在 Netezza SQL 查询中使用的其他分析。

关于本任务

数据库 SQL 扩展工具箱在 Db2® WarehouseDb2 Warehouse on CloudIBM® Integrated Analytics System上受支持。 可以从 IBM developerWorks 页面下载该工具。

有关实施的函数的列表,请参阅 发行说明

有关可用功能的详细信息,请参阅此链接 https://www.ibm.com/support/knowledgecenter/en/SSULQD_7.2.1/com.ibm.nz.sqltk.doc/c_sqltk_plg_overview.html

先决条件:
  • 系统上必须已安装 Db2 客户机驱动程序。 运行安装程序需要 CLPPLUS。
  • 具有在数据库中创建模式/函数的特权的数据库用户凭证。
用法:
./setup.py [-user USER -schema SCHEMA] {[-dsn DSN] | [-pw PASS -port PORT -db DATABASE -host HOST_IP]} [-cleanup]

  -h, --help      show this help message and exit
  -user USER      Username with which you want to register udx. Default is bluadmin.
  -pw PW          Password of -u user; prompts user if -u is provided.
  -host HOST      Host IP if you're using Db2WoC. Default is current host's IP.
  -port PORT      Port number in case of SSL connections. Default is 50000.
  -db DB          Database name. Default is BLUDB.
  -dsn DSN        Used in case of SSL connection mostly.
  -schema SCHEMA  Schema name in which user wants to register the UDXes. Default is $USER.
  -cleanup        Cleanup the sqltoolkit funtions created.

过程

  1. 根据数据库服务器的体系结构来下载软件包。 例如,对于 x86_64 平台:
    [bluadmin@host - Db2wh ga_1.2]$ uname -i
            x86_64
            [bluadmin@host - Db2wh ga_1.2]$ ls
            db_sqltoolkit_x86_64_1.2.tgz
  2. 将软件包解压缩到您登录时所采用的用户可访问的位置:
    -- tar -xzf db_sqltoolkit_arch.tgz
    示例:
    
            [bluadmin@host - Db2wh ga_1.2]$ ls
            db_sqltoolkit_x86_64  db_sqltoolkit_x86_64_1.2.tgz
  3. 将目录更改为 db_sqltoolkit_arch
    示例:
    [bluadmin@host - Db2wh ga_1.2]$ cd db_sqltoolkit_x86_64
            [bluadmin@host - Db2wh db_sqltoolkit_x86_64]$ ll
            total 4100
            -rw-r--r-- 1 bluadmin bluadmin   40011 Sep  3 12:39 create_sql_function.base
            -rw-r--r-- 1 bluadmin bluadmin     182 Sep  5 13:09 deploy.base
            -rw-r--r-- 1 bluadmin bluadmin     536 Aug 14 14:19 deploy_toolkit.cpp
            -rw-r--r-- 1 bluadmin bluadmin    8556 Sep  5 13:33 drop_sql_function.base
            -rw-r--r-- 1 bluadmin bluadmin      22 Sep  5 10:10 get_string_units.base
            -rw-r--r-- 1 bluadmin bluadmin      80 Aug 29 14:05 get_upload_path.sql
            -rw-r--r-- 1 bluadmin bluadmin    2069 Aug 14 14:19 README
            -rwxr-xr-x 1 bluadmin bluadmin   11932 Sep  5 14:31 setup.py
            -rw-r--r-- 1 bluadmin bluadmin 4106240 Aug 14 14:19 toolkit_libs.tar
            -rw-r--r-- 1 bluadmin bluadmin      36 Aug 29 14:04 upload.sql

    该目录包含 setup.sh 文件。

  4. 运行 ./setup.sh -h 以显示选项的帮助。
  5. 使用 DSN 选项时,只有用户选项、模式选项和清除选项有效。 其他连接选项将被忽略。
    注: 使用 DSN 选项时,请按如下所示添加 DSN:
    1. 在目录中,使用 db_catalog 命令。
    2. 使用 db2cli writecfgdb2dsdriver.cfg 中添加 DSN 和数据库。 这将启用 CLPPlus 所需要的 WebAPI。
  6. 如果命令行参数中未提供密码,那么系统将提示您输入密码。 对于 DSN,仅当出现提示时才输入密码。 即使密码是作为命令行参数提供的,它在 DSN 中也将被忽略。
    [bluadmin@host - Db2wh db_sqltoolkit_x86_64]$ ./setup.py -schema sqltk
            [INFO] : Checking required files ...
            [INFO] : Connecting user bluadmin with 172.16.176.74:50000/BLUDB
            Enter password for bluadmin :
            [INFO] : STRING_UNITS detected as : SYSTEM
            [INFO] : The files have been uploaded.
            [INFO] : Registering the functions ...
            [INFO] : Successfully operated ..
            [bluadmin@host - Db2wh db_sqltoolkit_x86_64]$
    		
    注: 建议将此函数与您已在其中注册工具箱的 SCHEMA_NAME 配合使用。 否则,由于已经存在相同名称的函数,因此您可能会获得意外结果。 此函数可能存在于 CURRENT_PATH 中具有更高优先顺序的模式中。
    示例:
    db2 => values CURRENT_PATH
    
    1
    ----------------------------------------------------------------------------------------------------
    "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","BLUADMIN"
    
    In the above path, SYSIBM schema has the highest precedence. If a function exists in both SYSIBM and BLUADMIN schemas, and you run that function without mentioning the schema, the version in SYSIBM will be executed.
    
    db2 => values BLUADMIN.COMPRESS('some_string')
    已知问题:
    • 对于 ARRAY_COMBINE 函数,多个字符定界符不起作用。
    • 与 Netezza 相比,ENCRYPT 和 COMPRESS 结果可能有所不同。 如果使用 ENCRYPT 函数对字符串进行加密,并对加密结果使用 DECRYPT 函数,那么将返回原始字符串。 与 COMPRESS 和 DECOMPRESS 函数相似。 例如,VALUES(DECRYPT(ENCRYPT('string')) = 'string'

最佳实践

  • 在 Db2 中,NVARCHAR 以 VARCHAR 形式进行内部处理。 因此,注册仅具有 VARCHAR 变体的函数也将在内部处理 NVARCHAR。
  • ARRAY 对象适合于表的 VARCHAR 列。 用户应负责在 VARCHAR 中分配适当的内存。

    例如,VARCHAR(100) 在添加多个 BIGINT 值时可能会出错。 但是,将它更改为 VARCHAR(10000) 可以解决此问题。

  • 由于 BYTEINT 在 db2 中会转换为 SMALLINT,因此 ARRAY(1) 对于此类查询会产生错误。 建议用户使用 ARRAY(2),因为 BYTEINT 值以 SMALLINT 形式进行处理。
  • 用户需要将函数与用于注册的模式名称配合使用。 模式将是用于安装软件包的用户名。
  • 与 PDA 相比,Db2 中 DOUBLE/BOOLEAN 的输出表示形式有所不同。 因此,如果您将 DOUBLE/BOOLEAN 数据类型与函数配合使用,那么您可能会发现输出有所不同。
  • 如果工作负载/查询涉及到“NCHAR”或“NVARCHAR”数据,那么必须使用适当的 STRING_UNITS 配置来设置系统。

卸载 DB SQL Extension Toolkit

清除 SQL Extension Toolkit 将需要在安装时所提供的模式。 如果未提供模式,那么运行脚本的用户将被视为模式名称。

过程

请使用以下命令来下载该工具:
[bluadmin@host - Db2wh db_sqltoolkit_x86_64]$ ./setup.py -schema sqltk -cleanup
        [INFO] : Checking required files ...
        [INFO] : Connecting user bluadmin with 172.16.176.74:50000/BLUDB
        Enter password for bluadmin :
        [INFO] : STRING_UNITS detected as : SYSTEM
        [INFO] : De-registering functions ...
        [INFO] : Successfully operated ..
        [bluadmin@host - Db2wh db_sqltoolkit_x86_64]$

示例

安装该工具箱:
  • 使用连接标识:
    ./setup.py -user bluadmin -host myhost_ip -schema db_toolkit
  • 使用 DSN:
    ./setup.py -user bluadmin -dsn MY_DSN -schema db_toolkit
卸载该工具箱:
  • 使用连接标识:
    ./setup.py -user bluadmin -host myhost_ip -schema db_toolkit -cleanup
  • 使用 DSN:
    ./setup.py -user bluadmin -dsn MY_DSN -schema db_toolkit -cleanup