IBM PureData System for Analytics ( Netezza ) 与 Db2 SQL 兼容性
在大多数情况下, Db2® 和 Netezza® 产品提供等效的SQL支持。 例如,在大多数情况下,特定的 Netezza 命令都有等效的 Db2 语句,您无需修改代码即可使用。 在有限数目的情况下,需要进行更改。
| Netezza | Db2 |
|---|---|
| ALTER AGGREGATE | 没有可用的 Db2 AGGREGATE 语句。 使用 Db2更改聚合的定义。 IBM®将ALTER AGGREGATE命令转换为ALTER FUNCTION语句。 |
| ALTER FUNCTION | Db2支持的 Netezza 命令参数只有 FENCED 和 NOFENCED。 使用 Db2更改函数的定义。 |
| ALTER GROUP | 没有可用的 Db2 语句。 请使用角色代替组。 |
| ALTER HISTORY CONFIGURATION | Db2 ALTER HISTORY CONFIGURATION 语句不可用。 要收集和查看数据库使用情况的历史数据,请使用 Db2 监控功能。 |
| ALTER LIBRARY | 没有可用的 Db2 语句。 Database Harmony Profiler 工具会注释掉 ALTER LIBRARY 命令。 为确保您的 Db2 产品能够访问依赖库,请将它们放置在 Windows 操作系统中由 LIBPATH 或 PATH 环境变量指定的目录中,或 Linux® 和 UNIX 操作系统中实例级函数目录 ( $inst_home_dir/sqllib/function/ ) 中。 |
| ALTER SCHEMA | Db2不支持 Netezza的某些子句:
|
| ALTER SESSION | 没有可用的 Db2 语句。 请考虑使用 WLM_CANCEL_ACTIVITY 或 WLM_SET_CONN_ENV 过程。 |
| ALTER TABLE | Db2不支持 Netezza的部分功能:
|
| ALTER USER | 没有可用的 Db2 语句。 要更改用户,您可以使用网络控制台。 |
| ALTER VIEW | Db2不支持 Netezza的所有子句:
|
| ALTER VIEWS ON | 没有可用的 Db2 语句。 Netezza 中用于物化视图的ALTER VIEWS ON命令。 物化查询表(MQT)可以替代 Netezza物化视图。 Database Harmony Profiler 工具会将具体化视图转换为 MQT。 请修改 ALTER VIEWS ON 命令中与基本表关联的 MQT。 |
| BEGIN | 没有可用的 Db2 EGIN TRANSACTION 语句。 Db2自动开始交易(工作单元)。 请移除 BEGIN TRANSACTION 命令,如有必要,调整应用程序代码以禁用自动落实功能。 |
| COMMENT ON | Db2不支持 LIBRARY 和 DATABASE 对象类型。 请勿注释数据库,而是注释模式。 |
| COMMIT [WORK|TRANSACTION] | 不支持 TRANSACTION 参数。 请将其移除,或使用 WORK 参数。 (无论是否指定 WORK 参数,ROLLBACK TRANSACTION 语句的行为方式都相同。) |
| CREATE AGGREGATE | 没有可用的 Db2 语句。 使用 Db2定义聚合。 Database Harmony Profiler 工具会将 CREATE AGGREGATE 命令转换为 CREATE FUNCTION 语句。 |
| CREATE DATABASE | 无法使用 Db2 语句。 数据库和谐分析器工具假定数据库只有一个架构,并将CREATE DATABASE命令转换为 Db2 语句,以便将随后创建的所有对象置于同一架构下。 |
| CREATE GROUP | 没有可用的 Db2 语句。 要创建群组,您可以使用网络控制台。 |
| CREATE HISTORY CONFIGURATION | 无法使用 Db2 创建历史配置语句。 要收集和查看数据库使用情况的历史数据,请使用 Db2 监控功能。 |
| CREATE [OR REPLACE] FUNCTION | Db2 CREATE FUNCTION 语句不支持 Netezza CREATE [OR REPLACE] FUNCTION 命令的所有子句:
|
| CREATE [OR REPLACE] LIBRARY | 没有可用的 Db2 CREATE [OR REPLACE] LIBRARY 语句。 Database Harmony Profiler 工具会注释掉 CREATE [OR REPLACE] LIBRARY 命令。 为确保从属库可访问,请将它们放置在Windows操作系统中由 LIBPATH 或 PATH 环境变量指定的目录中,或 Linux 操作系统中的实例级函数目录( $inst_home_dir/sqllib/function/ )中。 |
| CREATE SCHEDULER RULE | 没有可用的 Db2 语句。 请考虑使用 Db2 WLM 功能。 |
| CREATE SCHEMA | Db2不支持PATH子句。 对于动态 SQL 语句,SQL 路径是 Db2 特殊寄存器的值,您可以使用 SET PATH 命令更改该值。 对于静态 SQL 语句,请使用 FUNCPATH 绑定选项指定 SQL 路径。 |
| CREATE TABLE | Db2 CREATE TABLE 语句和 Netezza CREATE TABLE 命令之间存在一些差异:
|
| CREATE USER | 没有可用的 Db2 语句。 要创建用户,您可以使用网络控制台。 |
| DROP GROUP | 没有可用的 Db2 DROP GROUP 语句。 请使用角色代替组。 |
| DROP HISTORY CONFIGURATION | 无法使用 Db2 CONFIGURATION 语句。 要收集和查看数据库使用情况的历史数据,请使用 Db2 监控功能。 |
| DROP USER | 没有可用的 Db2 DROP USER 语句。 要删除用户,您可以使用网络控制台。 |
| GENERATE [EXPRESS] STATISTICS | 无法使用 Db2 语句。 使用 Db2 RUNSTATS 命令或自动统计收集。 IBM将生成统计信息命令转换为 RUNSTATS 命令。 RUNSTATS 命令不支持 GENERATE STATISTICS 命令中使用的列范围语法,因此 Database Harmony Profiler 工具不会保留该语法。 |
| GRANT | Db2不支持 Netezza支持的所有对象类型和权限:
|
| GROOM TABLE | Db2 语句不可用。 对于按列组织的表,将会自动完成重组。 对于按行组织的表,请使用 REORG TABLE 语句。 |
| INSERT | Db2不支持DEFAULT VALUES子句。 请针对每个列,将 DEFAULT VALUES 子句替换为 DEFAULT 关键字。 例如,将 INSERT INTO tb1(c1, c2) DEFAULT VALUES 更改为 INSERT INTO tb1(c1, c2) VALUES (DEFAULT, DEFAULT)。 |
| LOCK TABLE | Db2不支持 Netezza的 NOWAIT 参数。 此外,您必须 Db2使用SHARE或EXCLUSIVE锁定模式参数。 考虑将 Netezza EXCLUSIVE模式参数替换为 Db2 ,并考虑将 Netezza、SHARE ROW EXCLUSIVE和EXCLUSIVE模式参数替换为 Db2 模式参数。 Database Harmony Profiler 工具会执行以下操作:
|
| REVOKE | Db2不支持 Netezza支持的所有对象类型和权限:
|
| ROLLBACK [WORK|TRANSACTION] | 不支持 TRANSACTION 参数。 请将其移除,或使用 WORK 参数。 (无论是否指定 WORK 参数,ROLLBACK TRANSACTION 语句的行为方式都相同。) |
| SELECT | Db2和 Netezza之间存在多种差异,其中一些差异可以通过将 SQL_COMPAT 全局变量设置为 “NPS” 来解决:
|
| SET | Db2不支持大多数 Netezza 会话变量。 使用其他技术来调整和配置您的 Db2 产品。 |
| SHOW LIBRARY | 没有可用的 Db2 语句。 Database Harmony Profiler 工具会注释掉 SHOW LIBRARY 命令。 |
| TRUNCATE TABLE | Db2需要IMMEDIATE参数。 此参数指定立即处理截断操作,并且不可撤销。 |
| Netezza | Db2 |
|---|---|
| ! factorial 运算符 | 不支持此运算符。 您可以改为创建阶乘函数。 |
| ^ 和 ** 指数运算符 | 缺省情况下,不支持这些运算符。 请通过将 SQL_COMPAT 全局变量设置为 'NPS' 来启用此支持。 |
| # 按位 XOR 运算符 | 缺省情况下,不支持此运算符。 请通过将 SQL_COMPAT 全局变量设置为 'NPS' 来启用此支持。 |
| << 和 >> 按位左移和右移运算符 | 不支持这些运算符。 可以用 2 的幂的乘法或除法替换运算符。 例如, col1 << 4 相当于 col1
* power(2, 4) 。 |
| Netezza | Db2 |
|---|---|
| 系统视图(名称为 _V_viewname 或 _VT_viewname)和系统表(名称为 _T_tablename) | 不支持系统视图和系统表。 尽可能使用 Db2 视图。 否则,请创建您自己的视图。 |
| 列名中的 & 符 | 除非使用定界符(例如,"SALES&"),否则不支持此语法。 |
| 作为标识起始字符的下划线 (_) | 除非使用定界符(例如,"_SALES"),否则不支持此语法。 |