华为云用户手册

  • 步骤二:创建日志空间 在“容器日志接入”页面,选择左侧导航栏的“日志空间”。 单击“申请实时日志空间”。 根据界面提示填写日志空间参数。 配置实时日志空间信息,参数说明如表2所示,配置完成后,单击“下一步”。 表2 实时日志空间信息参数说明 参数名称 参数说明 空间名称 自定义日志空间名称,建议包含日志类型语义。 空间描述 输入日志空间描述,非必填项。 日志类型 选择需接入的日志类型。 日志大小 预计一天的日志量,默认为1GB。 开启日志检索 如果需要使用日志检索功能,可以打开该开关。 检索空间类型 选择ClickHouse。 原索引名称(ClickHouse) 可选择现有的ClickHouse,如果不填会自动生成。 TTL 日志索引的生命周期,即可以检索的日志时间范围。 配置实时日志字段信息,参数说明如表3所示,配置完成后,单击“下一步”。 表3 实时日志字段信息参数说明 参数名称 参数说明 自定义字段 勾选需要接入的日志字段,包括通用字段、容器字段和虚机字段。 新增自定义环境变量 如需添加自定义环境变量,请选择环境变量名,然后单击“添加”。虚机暂无可选自定义环境变量。 清洗规则 选择日志清洗规则。 请优先使用算子清洗模式采样,原始日志采样清洗只适用于单纯采样,不需要清洗的场景。 日志样例 输入日志样例。 解析脚本 配置解析脚本,将日志样例清洗为字段显示。 解析脚本中不支持使用中划线“-”,支持使用下划线“_”。 清洗字段 配置解析脚本后单击“配置解析脚本”,自动生成清洗字段,查看字段是否符合预期。 开启汇聚 选择是否开启日志汇集,如果日志量较大且不需要关注原始日志时可以进行日志汇集。 开启后需要配置汇集相关参数。 汇聚粒度 开启汇聚后,需要设置汇集粒度。支持分钟级和秒级数据汇聚。选择分钟级,每一分钟会生成一个统计点,选择秒级,每一秒会生成一个统计点。 汇聚时间戳 仅支持时间戳格式字段timestamp,获取当前计算的日志的时间。 时间戳格式 选择时间戳格式。支持秒、毫秒、纳秒级时间戳,获取当前计算的日志的时间格式。 汇聚维度 结合业务场景需要,选择日志是以哪些日志字段进行日志汇聚,支持多选。 汇聚度量 设置对日志字段以COUNT、SUM、MAX、MIN进行度量。 原始字段是日志中的字段,用来获取原始值;度量字段是用户自定义字段名,计算后,度量的值会赋值给该字段。 输出原始日志 选择是否需要输出原始日志。如果打开输出原始日志,原始日志也会上报。 日志字段确认,确认日志字段配置是否达到预期,已达到预期,单击“下一步”。 其中字段来源COMMON表示通用字段、CONTAINER表示容器字段、VM表示虚机字段。 申请日志空间共享,如果需要其他自有服务共用这个空间进行日志下发和日志检索,可以添加共享服务。配置完成后,单击“保存”。
  • 步骤三:创建日志采集配置 在“容器日志接入”页面,选择左侧导航栏的“日志采集配置”。 单击“创建日志采集配置”。 配置日志采集参数,配置完成后,单击“确定”。 新创建的采集配置默认为草稿状态,展示在“草稿”页签下,当配置被微服务使用后,状态会更新为“已下发”,并展示到“已下发”页签下。 表4 日志采集配置参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目,相同服务的不同日志使用同一个日志项目 日志空间 选择已创建的日志空间。选择日志空间时日志提取规则会展示日志空间定义的日志格式,采集的日志须满足对应格式。 配置名称 自定义日志采集配置名称。 配置类型 选择日志采集配置类型,建议选择“FILEBEAT”。 日志类型 输入采集日志类型。 日志路径 填写实际日志路径,可使用通配符进行匹配。 说明: 注意避免同一台主机上下发的多个采集任务重复采集相同的日志文件,会导致filebeat进程异常。 日志TPS TPS表示单实例每秒日志条数,请准确填写,用于推荐资源自动计算。 日志模式 选择日志采集模式,是单行模式还是多行模式。 是否支持软连接 当填写的日志路径为链接路径时,需要开启支持软连接。 首行正则表达式 日志模式选择多行模式时,需要输入首行正则表达式。 日志提取规则 根据填写的配置参数会自动生成提取规则。
  • 步骤三:创建视图 单指标查询视图/多指标组合查询视图 如果需要在大盘监控单个指标的报表(如折线型报表),可以创建单指标查询视图。 如果需要在大盘同时监控多个指标(如表格型报表),可以创建多指标组合查询视图。 在“指标仓库”页面,选择需创建视图的逻辑主体,然后单击“新建查询视图”,如图1所示。 图1 新建查询视图 配置查询视图参数,如表3所示,配置完成后,单击“保存”。 表3 新建查询视图参数说明 参数名称 参数说明 类型 视图类型默认为“QUERY”,不可修改。 数据源 选择视图使用的数据表。 英文名称 视图英文名,尽量使用英文简写,不超过50个字符,单词之间使用下划线分隔。 中文名称 视图中文名,不超过20个字符。 描述 输入视图描述内容。 指标 选择需要计算的指标,可选择单指标或者多个指标。 projection 选择是否开启projection。 持久化视图/长期存储视图 持久化视图(自定义汇聚粒度)、长期存储视图(依次执行5分钟、1小时、1天汇聚粒度)可以持久化查询结果。这两种视图需要在查询视图的基础上进行创建。 在“指标仓库”页面,选择需创建视图的逻辑主体,默认显示“关系图模式”,可以单击页面已创建的指标或视图,弹出“指标”页面或“视图”页面。 也可以单击“列表模式”,切换至“列表模式”,在指标列表单击对应指标所在行的“查看详情”,弹出“指标”页面;或者单击“视图”,在视图列表单击对应视图所在行的“查看详情”,弹出“视图”页面。 在“指标”页面,选择已创建的单指标视图或多指标视图,单击视图的“操作”,在下拉列表中选择“创建持久化视图”或者“创建长期存储视图”,如图2所示。 或者在“视图”页面,单击“创建视图”,在下拉列表中选择“创建持久化视图”或者“创建长期存储视图”,如图3所示。 图2 指标详情页 图3 视图详情页 配置如下视图参数,配置完成后,单击“创建”。 配置Basic参数,具体参数如表4所示。 表4 Basic参数说明 参数名称 参数说明 英文名称 视图英文名,尽量使用英文简写,不超过50个字符,单词之间使用下划线分隔。 中文名称 视图中文名,不超过20个字符。 任务名称 汇聚的任务名,默认与视图名一致。 描述 输入描述信息。 类型 根据选择创建的视图类型显示,持久化视图为PERSISTENT,长期存储视图为LONG_TERM。 任务类型 根据视图数据来源显示,不可修改。 调度集群 选择定时调度集群。 执行集群 选择执行汇聚的执行集群。 MPPDB执行集群 (长期存储视图包含该参数)选择执行分钟级、小时级、天级MPPDB汇聚的执行集群。 查询范围 设定任务查询时间范围,不填则默认每分钟执行一次。 例如设置为1小时,则查询时间区间为当前时间减1小时到当前时间(前闭后开)。 Auto Round 设置任务执行时间是否舍去分和秒,默认为“是”。 例如汇聚周期是1小时,那么不管是2:10,还是2:40触发任务,汇聚周期都会自动变为1:00~2:00;如果选否,那么汇聚周期就是1:10~2:10,以及1:40~2:40。 调度(固定时间) 让任务在固定时间执行,一般天级任务会修改此值,例如修改为每天2点执行,不涉及无须选择。 例如设置3小时40分钟,则每天3点40执行任务;设置24小时40分钟,则每天0点40执行任务。 调度(固定间隔) 设置执行任务的时间间隔,一般是小时任务和分钟任务会修改此值,不涉及无须选择。 例如设置6小时,则每6小时执行一次,即0点、6点、12点、18点执行;配合固定时间调度,间隔时间配置为6小时,固定时间配置为10分钟,则每天的0:10、6:10、12:10、18:10执行。 汇聚时间提前 设置汇聚任务执行时选择之前的时间段。 例如汇聚时间提前1小时,每次查询的时间范围自动往前偏移1小时;当查询范围是小时、天的时候,一般不需要配置;分钟汇聚任务,由于延迟原因,一般都需配置。 结果时间偏移 设置汇聚出的结果存入输出表的时间值。 例如结果时间偏移1小时,每次查询的数据存入MPPDB数据库的timestamp自动增加1小时。 配置Rule参数,具体参数如表5所示,配置完成后,单击“Build Statement”。 表5 Rule参数说明 参数名称 参数说明 表类型 默认显示视图数据表类型。 数据源 选择需要汇聚的数据表。 从数据源列表 分表场景时使用,如果选中了数据源A和从数据源列表B,会优先从B表匹配维度。 Indicators 选择汇聚任务需要计算的指标列表。 Order By 选择需要排序的维度。 limit 设置查询返回值个数,上限为200000。 分组维度 选择需要Groupby的维度。 配置Output参数,具体参数如表6所示。 表6 Output参数说明 参数名称 参数说明 输出表类型 选择存放汇聚结果的表(输出表)类型,默认为MPPDB。 集群名 选择输出表所在的集群名。 数据库名 选择输出表所在的数据库名。 表名 选择输出表的表名,选择前需要创建MPPDB表。 列名 选择输出表的所有列名。 查询结果列 汇聚结果的列名。 Column Mappings 根据输出表(MPPDB)选择对应的查询结果列。 单击已创建的持久化视图或长期存储视图,在“视图”页面单击“Start Task”,启动第一层任务。保证期望状态和实际状态都为“Running”,如下图图4所示。 图4 启动任务 单击“Create Hourly Task”,会自动创建小时级的MPPDB汇聚任务和表(TTL 默认1年),自动将5分钟级别的数据roll up成小时级的。再单击“Start Hourly Task”启动该任务,保证期望状态和实际状态都为“Running”。 单击“Create Daily Task”,会自动创建天级的MPPDB汇聚任务和表(TTL 默认2年),自动将小时级别的数据roll up成天级的。再单击“Start Daily Task”启动该任务,保证期望状态和实际状态都为“Running”。
  • 步骤二:创建指标 在“指标仓库”页面,单击已创建的逻辑主体。 单击逻辑主体页面的“新建指标”,选择“新建单个指标”。 配置指标参数,参数说明如表2所示,配置完成后,单击“创建”。 表2 配置指标参数说明 参数名称 参数说明 类型 选择指标类型。 英文名称 自定义英文名称。 中文名称 自定义中文名称。 指标等级 选择指标等级。 描述 输入描述信息。 开放名称 - 指标类型 根据指标的类型分为RequestCount、DelayTime、SuccessRate、FailureRate、Speed、Bandwidth。 逻辑主体 选择指标来源的逻辑主体。 标签列表 - 指标责任人 - 开放状态 - 抽象指标 - 是否多聚合字段 - 聚合类型 选择指标的统计方式。 聚合字段 指标的度量对象。 过滤器 依据业务限定条件,给指标设置过滤规则,支持AND、OR多层嵌套过滤条件,节点类型为NODE。 举例:有5个过滤条件ABCDE,过滤条件汇总后为(A AND B)OR (C AND D AND E),ABCDE即为NODE节点。
  • 步骤四:创建日志配置下发任务 在“虚拟机日志接入”页面,选择左侧导航栏的“任务管理”。 单击页面右上角的“新建任务”。 配置任务参数,参数说明如表5所示,配置完成后,单击“确定”。 表5 日志配置下发任务参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目。 任务名称 自定义任务名称。 任务类型 选择任务类型。 配置类型 选择日志采集配置类型。 配置列表 选择需要下发的配置。 用户名称 选择已规划并拥有日志读取权限的业务账号。 选择主机 选择需要下发配置的主机。 已选主机 显示已选主机。 在任务列表中查看已创建的任务,单击任务所在行“操作”列的“执行”。 执行完成后,状态为成功即表示日志配置内容已下发成功,即会按照配置将日志接入AppStage。
  • 步骤三:创建日志采集配置 在“虚拟机日志接入”页面,选择左侧导航栏的“日志采集配置”。 单击“创建日志采集配置”。 配置日志采集参数,配置完成后,单击“确定”。 新创建的采集配置默认为草稿状态,展示在“草稿”页签下,当配置被微服务使用后,状态会更新为“已下发”,并展示到“已下发”页签下。 表4 日志采集配置参数说明 参数名称 参数说明 日志项目 选择已创建的日志项目,相同服务的不同日志使用同一个日志项目 日志空间 选择已创建的日志空间。选择日志空间时日志提取规则会展示日志空间定义的日志格式,采集的日志须满足对应格式。 配置名称 自定义日志采集配置名称。 配置类型 选择日志采集配置类型,建议选择“FILEBEAT”。 日志类型 输入采集日志类型。 日志路径 填写实际日志路径,可使用通配符进行匹配。 说明: 接入容器日志需要根据通配符匹配完成。 注意避免同一台主机上下发的多个采集任务重复采集相同的日志文件,会导致filebeat进程异常。 日志TPS TPS表示单实例每秒日志条数,请准确填写,用于推荐资源自动计算。 如果采集路径是单个日志,则按照单个日志单台机器(pod)的TPS值填写,且按照高峰期计算。 如果采集路径配置了通配符,则将采集的日志TPS累加,累加计算高峰期单台机器(pod)的TPS,建议按近期业务增长预期填写。 日志模式 选择日志采集模式,是单行模式还是多行模式。 是否支持软连接 当填写的日志路径为链接路径时,需要开启支持软连接。 首行正则表达式 日志模式选择多行模式时,需要输入首行正则表达式。 日志提取规则 根据填写的配置参数会自动生成提取规则。
  • 步骤二:创建日志空间 在“虚拟机日志接入”页面,选择左侧导航栏的“日志空间”。 单击“申请实时日志空间”。 根据界面提示填写日志空间参数。 配置实时日志空间信息,参数说明如表2所示,配置完成后,单击“下一步”。 表2 实时日志空间信息参数说明 参数名称 参数说明 空间名称 自定义日志空间名称,建议包含日志类型语义。 空间描述 输入日志空间描述,非必填项。 日志类型 选择需接入的日志类型。 日志大小 预计一天的日志量,默认为1GB。 开启日志检索 如果需要使用日志检索功能,可以打开该开关。 检索空间类型 选择ClickHouse。 原索引名称(ClickHouse) 可选择现有的ClickHouse,如果不填会自动生成。 TTL 日志索引的生命周期,即可以检索的日志时间范围。 配置实时日志字段信息,参数说明如表3所示,配置完成后,单击“下一步”。 表3 实时日志字段信息参数说明 参数名称 参数说明 自定义字段 勾选需要接入的日志字段,包括通用字段、容器字段和虚机字段。 新增自定义环境变量 如需添加自定义环境变量,请选择环境变量名,然后单击“添加”。虚机暂无可选自定义环境变量。 清洗规则 选择日志清洗规则。 请优先使用算子清洗模式采样,原始日志采样清洗只适用于单纯采样,不需要清洗的场景。 日志样例 输入日志样例。 解析脚本 配置解析脚本,将日志样例清洗为字段显示。 说明: 配置解析脚本时字段命名不支持使用中划线“-”,支持使用下划线“_”。 清洗字段 配置解析脚本后单击“配置解析脚本”,自动生成清洗字段,查看字段是否符合预期。 开启汇聚 选择是否开启日志汇集,如果日志量较大且不需要关注原始日志时可以进行日志汇集。 开启后需要配置汇集相关参数。 汇聚粒度 开启汇聚后,需要设置汇集粒度。支持分钟级和秒级数据汇聚。选择分钟级,每一分钟会生成一个统计点,选择秒级,每一秒会生成一个统计点。 汇聚时间戳 仅支持时间戳格式字段timestamp,获取当前计算的日志的时间。 时间戳格式 选择时间戳格式。支持秒、毫秒、纳秒级时间戳,获取当前计算的日志的时间格式。 汇聚维度 结合业务场景需要,选择日志是以哪些日志字段进行日志汇聚,支持多选。 汇聚度量 设置对日志字段以COUNT、SUM、MAX、MIN进行度量。 原始字段是日志中的字段,用来获取原始值;度量字段是用户自定义字段名,计算后,度量的值会赋值给该字段。 输出原始日志 选择是否需要输出原始日志。如果打开输出原始日志,原始日志也会上报。 日志字段确认,确认日志字段配置是否达到预期,达到预期后可单击单击“下一步”。 其中字段来源COMMON表示通用字段、CONTAINER表示容器字段、VM表示虚机字段。 申请日志空间共享,如果需要其他自有服务共用这个空间进行日志下发和日志检索,可以添加共享服务。配置完成后,单击“保存”。
  • Step1 准备镜像文件 您需要提前准备好符合如下条件的镜像文件。 操作系统:基于SUSE、Oracle Linux、RedHat、Ubuntu等发行版;支持32位和64位 镜像格式:VMDK、VHD、QCOW2、RAW、VHDX、QED、VDI、QCOW、ZVHD2和ZVHD 镜像大小:不超过128GB;如果镜像大小介于128GB和1TB之间,需要将镜像文件转换为RAW或ZVHD2格式,然后使用快速导入功能进行导入 网络能力:清理网络规则文件;设置网卡属性为DHCP 工具:强烈建议安装Cloud-Init工具 驱动:安装原生的XEN和KVM驱动 文件系统:修改grub文件磁盘标识方式为UUID;修改fstab文件磁盘标识方式为UUID 单击这里,了解更多Linux系统镜像文件的限制以及检查、配置方式。
  • ANALYZE 输入:CREATE TABLE,使用INDEX 1 2 CREATE TABLE EMP27 AS emp21 WITH DATA PRIMARY INDEX (EMPNO) ON COMMIT PRESERVE ROWS; 输出: Begin CREATE TABLE EMP27 ( LIKE emp21 INCLUDING ALL EXCLUDING PARTITION EXCLUDING RELOPTIONS EXCLUDING DISTRIBUTION ) DISTRIBUTE BY HASH ( EMPNO ) ; INSERT INTO EMP27 select * from emp21 ; end ; / ANALYZE Emp27 (EmpNo); 父主题: 表迁移
  • dbc.sessioninfo 输入: SELECT username ,clientsystemuserid ,clientipaddress ,clientprogramname FROM dbc.sessioninfo WHERE sessionno = lv_mig_session ; 输出: select usename AS username, NULL::TEXT AS clientsystemuserid , client_addr AS clientipaddress, application_name AS clientprogramname from pg_catalog.pg_stat_activity WHERE pid = lv_mig_session;
  • dbc.sessioninfoV 输入: select username,clientsystemuserid,clientipaddress,clientprogramname from dbc.sessioninfoV where sessionno = 140167641814784; 输出: select usename AS username, NULL::TEXT AS clientsystemuserid , client_addr AS clientipaddress, application_name AS clientprogramname from pg_catalog.pg_stat_activity WHERE pid = 140167641814784;
  • VOLATILE 输入文件中包含表的专用关键词VOLATILE,但GaussDB(DWS)不支持该关键词。因此,DSC在迁移过程中用关键词LOCAL TEMPORARY替换该关键词。根据配置输入,Volatile表在迁移中标记为本地临时表或无日志表。 输入:CREATE VOLATILE TABLE 1 CREATE VOLATILE TABLE T1 (c1 int ,c2 int); 输出: 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE T1 ( c1 INTEGER ,c2 INTEGER ) ; 输入:CREATE VOLATILE TABLE AS WITH DATA(session_mode=Teradata) 如果源表具有PRIMARY KEY(主键)或UNIQUE CONSTRAINT(唯一约束),则该表不包含任何重复记录。在这种情况下,不需要添加MINUS操作符删除重复的记录。 1 2 3 4 5 6 7 8 9 10 CREATE VOLATILE TABLE tabV1 ( C1 INTEGER DEFAULT 99 ,C2 INTEGER ,C3 INTEGER ,C4 NUMERIC (20,0) DEFAULT NULL (BIGINT) ,CONSTRAINT XX1 PRIMARY KEY ( C1, C2 ) ) PRIMARY INDEX (C1, C3 ); CREATE TABLE tabV2 AS tabV1 WITH DATA PRIMARY INDEX (C1) ON COMMIT PRESERVE ROWS; 输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CREATE LOCAL TEMPORARY TABLE tabV1 ( C1 INTEGER DEFAULT 99 ,C2 INTEGER ,C3 INTEGER ,C4 NUMERIC (20,0) DEFAULT CAST( NULL AS BIGINT ) ,CONSTRAINT XX1 PRIMARY KEY ( C1, C2 ) ) DISTRIBUTE BY HASH (C1); BEGIN CREATE TABLE tabV2 ( LIKE tabV1 INCLUDING ALL EXCLUDING PARTITION EXCLUDING RELOPTIONS EXCLUDING DISTRIBUTION ) DISTRIBUTE BY HASH (C1); INSERT INTO tabV2 SELECT * FROM tabV1; END ; / 父主题: 表迁移
  • 约束 表中的约束应用于多列。DSC支持以下约束: CHECK约束:由GaussDB T、GaussDB A 和GaussDB(DWS)支持。 REFERENCES约束/FOREIGN KEY:目前无法通过工具迁移。 PRIMARY KEY约束:可通过工具迁移。 UNIQUE约束:可通过工具迁移。 输入:CREATE TABLE,使用CONSTRAINT 1 2 3 4 5 6 7 8 9 10 CREATE SET TABLE DP_SEDW.T_170UT_HOLDER_ACCT, NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL ( BUSINESSDATE VARCHAR(10) , SOURCESYSTEM VARCHAR(5) , UPLOADCODE VARCHAR(1) , HOLDER_NO VARCHAR(7) NOT NULL , POSTAL_ADD_4 VARCHAR(40) , EPF_IND CHAR(1) , CONSTRAINT uq_t_170ut_hldr UNIQUE ( SOURCESYSTEM, UPLOADCODE, HOLDER_NO ) ) PRIMARY INDEX ( HOLDER_NO, SOURCESYSTEM ) ; 输出: 1 2 3 4 5 6 7 8 9 10 CREATE TABLE DP_SEDW.T_170UT_HOLDER_ACCT ( BUSINESSDATE VARCHAR( 10 ) , SOURCESYSTEM VARCHAR( 5 ) , UPLOADCODE VARCHAR( 1 ) , HOLDER_NO VARCHAR( 7 ) NOT NULL , POSTAL_ADD_4 VARCHAR( 40 ) , EPF_IND CHAR( 1 ) , CONSTRAINT uq_t_170ut_hldr UNIQUE ( SOURCESYSTEM, UPLOADCODE, HOLDER_NO ) ) DISTRIBUTE BY HASH ( HOLDER_NO, SOURCESYSTEM ); 输入: 建表后,可使用ALTER语句为该表字段添加列级约束。 1 2 3 4 CREATE TABLE GCC_PLAN.T1033 ( ROLLOUT_PLAN_LINE_ID NUMBER NOT NULL, UDF_FIELD_VALUE_ID NUMBER NOT NULL) ; ALTER TABLE GCC_PLAN.T1033 ADD CONSTRAINT UDF_FIELD_VALUE_ID_PK UNIQUE (UDF_FIELD_VALUE_ID) ; 输出: 1 2 3 4 CREATE TABLE GCC_PLAN.T1033 ( ROLLOUT_PLAN_LINE_ID NUMBER NOT NULL, UDF_FIELD_VALUE_ID NUMBER NOT NULL, CONSTRAINT UDF_FIELD_VALUE_ID_PK UNIQUE (UDF_FIELD_VALUE_ID) ; 建表脚本中,需在所有列声明之后添加约束创建语法。 父主题: 表迁移
  • TIME FORMAT 输入: COALESCE(t3.Crt_Tm , CAST('00:00:00' AS TIME FORMAT 'HH:MI:SS')) COALESCE(LI07_F3EABCTLP.CTLREGTIM,CAST('${NULL_TIME}' AS TIME FORMAT 'HH:MI:sS')) trim(cast(cast(a.Ases_Orig_Tm as time format'hhmiss') as varchar(10)))
  • TIMESTAMP FORMAT 输入: select a.Org_Id as Brn_Org_Id /* */ ,a.Evt_Id as Vst_Srl_Nbr /* */ ,a.EAC_Id as EAC_Id /* */ ,cast(cast(cast(Prt_Tm as timestamp format 'YYYY-MM-DDBHH:MI:SS' ) as varchar(19) )as timestamp(0)) as Tsk_Start_Tm /* */ from ${BRTL_VCOR}.BRTL_BC_SLF_TMN_RTL_PRT_JNL as a /* BC_ */ where a.DW_Dat_Dt = CAST('${v_Trx_Dt}' AS DATE FORMAT 'YYYY-MM-DD') ;
  • TIMESTAMP(n) FORMAT 输入: select cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') as DW_Snsh_Dt /* */ ,coalesce(a.CRE_DAT,cast('0001-01-01 00:00:01' as timestamp(6) format 'yyyy-mm-ddbhh:mi:ssds(6)')) as Crt_Tm /* */ ,cast('${v_Trx_Dt}' as date format 'yyyy-mm-dd') as DW_ETL_Dt /* */ ,cast(current_date as date format 'yyyy-mm-dd') as DW_Upd_Dt /* */ ,current_time(0) as DW_Upd_Tm /* */ ,1 as DW_Job_Seq /* */ from ${NDS_VIEW}.NLV65_MGM_GLDCUS_INF_NEW as a /* MGM */ ; ----------- cast('0001-01-01 00:00:00' as timestamp(6) format 'yyyy-mm-ddbhh:mi:ssds(6)') TO_TIMESTAMP('0001-01-01 00:00:00', 'yyyy-mm-dd HH24:MI:SS.US' ) ---------- cast('0001-01-01 00:00:00.000000' as timestamp(6)) cast('0001-01-01 00:00:00.000000' as timestamp(6)) ---------- CAST('0001-01-01 00:00:00.000000' AS TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(6)') TO_TIMESTAMP('0001-01-01 00:00:00.000000', 'yyyy-mm-dd HH24:MI:SS.US' ) ---------- cast(LA02_USERLOG_M.LOGTIME as TIMESTAMP(6) FORMAT 'YYYY-MM-DD HH:MI:SS.S(0)' ) TO_TIMESTAMP(LA02_USERLOG_M.LOGTIME, 'YYYY-MM-DD HH24:MI:SS' ) ---------- cast('0001-01-01 00:00:00' as timestamp(3) format 'yyyy-mm-ddbhh:mi:ssds(3)') TO_TIMESTAMP('0001-01-01 00:00:00', 'yyyy-mm-dd HH24:MI:SS.MS' ) ----------- CAST( '0001-01-01 00:00:01.000000' AS TIMESTAMP ( 6 ) format 'yyyy-mm-ddbhh:mi:ssds(6)' ) TO_TIMESTAMP('0001-01-01 00:00:01.000000', 'yyyy-mm-dd HH24:MI:SS.US' )
  • 编辑临时表 用户可在Data Studio中编辑临时表。如果用户在建表时创建了连接,则断开该连接时,临时表会被自动删除。 在SQL终端编辑临时表时,请确保启用了连接重用功能。有关如何启用该功能,请参阅管理SQL终端连接。 执行以下步骤编辑临时表: 在临时表上执行查询。 “结果”页签会显示SQL查询的结果以及执行的查询语句。 “结果”页签中编辑临时表。可单击“添加”、“删除”、“保存修改”、“取消修改”编辑临时表。 父主题: 表管理
  • 错误码 表2 错误码 错误码 错误信息 Teradata DSC_ERR_003_001 Query/statement is not supported since the Teradata view "dbc.indices" is supported only for the indextype P and Q. DSC_ERR_003_002 Error in Bteq processing. Something went wrong while processing the BTEQ commands. DSC_ERR_003_003 Query/statement is not supported in ddl DSC. Please check the same and refer user manual for the supported feature list. DSC_ERR_003_004 Unsupported format decimal format like ZZZ99Z, ZZZ.ZZ9. DSC_ERR_003_005 The tool does not support the "IN/NOT IN to EXISTS/NOT EXISTS conversion" for the query in which its outer query refers multiple tables and the column(s) specified with IN / NOT IN operator do not have table reference. DSC_ERR_003_006 The tool does not support the query in which its outer query refers multiple tables and the column(s) specified with IN / NOT IN operator do not have table reference. DSC_ERR_003_007 Primary Index without column is not supported. DSC_ERR_003_008 TeradataQuerySplitter config file contains list is not supported. DSC_ERR_003_009 Gauss does not support WITH CHECK OPTION in CREATE VIEW. Please enable the config_param tdMigrateVIEWCHECKOPTION to comment the WITH CHECK OPTION syntax in the statement. DSC_ERR_003_010 Gauss does not have an equivalent syntax for CHARACTER SET & CASE SPECIFIC option in column-level. Please enable the config_param tdMigrateCharsetCase to comment the CHARACTER SET & CASE SPECIFIC option syntax in the statement. DSC_ERR_003_011 Gauss does not have equivalent syntax for LOCK option in CREATE VIEW and INSERT statement. You can rewrite this statement or set the configuration parameter tdMigrateLOCKOption to TRUE to comment the LOCK syntax in this statement. DSC_ERR_003_012 Invalid width (Number of rows) parameter in MDIFF function. DSC_ERR_003_013 First 2 parameters should be present in MDIFF function. DSC_ERR_003_014 Query/statement is not supported as ORDER BY clause is not present in TOP WITH TIES. Please check the same and refer user manual. DSC_ERR_003_015 Column mismatch for the TITLE conversion. DSC_ERR_003_016 Query/statement is not supported as same Table alias is addressed in both inner and outer query. Please check the same and refer user manual for the supported feature list. DSC_ERR_003_017 Sub query list does not have columns. DSC_ERR_003_018 Number of expressions specified in the outer query does not match with inner query. DSC_ERR_003_019 Error while loading the .RUN FILE from given location. DSC_ERR_003_020 Unable to delete the file, file not found. DSC_ERR_003_021 Unable to delete the file, failed with IOEXception. DSC_ERR_003_022 Please specify the value for enviroment_file_path parameter in features-teradata.properties. Application DSC_ERR_004_001 Application has timed out, exceeded the hours specified in the config file. Please configure the Timeout parameter in the application.properties to higher value. DSC_ERR_004_002 Error while loading the property files from config directory. DSC_ERR_004_003 Error while loading the property files from config directory, directory is not readable. DSC_ERR_004_004 Error while loading the property file. DSC_ERR_004_005 Unable to load the JSON file. DSC_ERR_004_006 DSC tool does not support this Conversion type provided. DSC_ERR_004_007 Error occurred while framing output replacement query. DSC_ERR_004_008 Invalid index value while parsing the script. DSC_ERR_004_009 Error in conversion process, unable to convert the script. DSC_ERR_004_010 No SQL files found in the input directory with the extension specified in the fileExtension property in application.properties. DSC_ERR_004_011 The query length parameter (MaxSqlLen) value is not valid. DSC_ERR_004_012 Since the input folder has write privileges to Group and/or Others, process is stopped due to security reason. DSC_ERR_004_013 Since the output directory has write privileges to Group and/or Others, process is stopped due to security reason. DSC_ERR_004_014 Disk is almost full. Please clear the space and re-run the tool. DSC_ERR_004_015 DSC has been cancelled as configured by the user. DSC_ERR_004_016 Error occurred while formatting the sql scripts. DSC_ERR_004_017 Invalid index specified for fetching the element from list while formatting the scripts DSC_ERR_004_018 Error occurred while converting from string to integer. DSC_ERR_004_019 Input File is modified while DSC is in progress. DSC_ERR_004_020 Process is null, unable to read encoding format. DSC_ERR_004_021 Target File does not have write permissions. DSC_ERR_004_022 The target directory does not have write privileges to Group and/or Others, process is stopped due to security reason. DSC_ERR_004_023 PL/SQL object contains incorrect DDL/Query. Please check the script for the query position specified in the log. DSC_ERR_004_024 PreQueryValidation failed due to bracket mismatch or invalid terminator. DSC_ERR_004_025 Conversion task name is not valid. DSC_ERR_004_026 Database entered by the user is not supported by the DSC tool. DSC_ERR_004_027 Gauss db password should not be empty. DSC_ERR_004_028 Gauss db password should not be empty. DSC_ERR_004_029 Target db entered in the Gaussdb.properties is not valid. DSC_ERR_004_030 User name entered in the Gaussdb.properties is empty. DSC_ERR_004_031 Port entered in the Gaussdb.properties is not valid. DSC_ERR_004_032 IP entered in the Gaussdb.properties is not valid. DSC_ERR_004_033 Database name entered in the Gaussdb.properties is empty. DSC_ERR_004_034 DSC Application failed to start. DSC_ERR_004_035 Since the Enviroment variable path has write privileges to Group and/or Others, process is stopped due to security reason. DSC_ERR_004_036 Error while loading Enviroment parameter File. DSC_ERR_004_037 Invalid input (empty/space/string value) for the parameter NoOfThreads in application.properties. Hence taking the default processes. DSC_ERR_004_038 Input for the parameter NoOfThreads in application.properties is less than 1. Hence taking the default processes. DSC_ERR_004_039 Error in processing the DDL query. DSC_ERR_004_040 Error in processing the PL/SQL query. DSC_ERR_004_041 Error in post processing the query. DSC_ERR_004_042 Invalid application timeout value, default to 4 hours. DSC_ERR_004_043 Error in writing the output file. DSC_ERR_004_044 Error in reading the input file. DSC_ERR_004_045 No valid files found in the input directory for migration. DSC_ERR_004_046 Query is not converted as it contains unsupported keyword. DSC_ERR_004_047 Error while reading the property. DSC_ERR_004_048 PreQueryValidation failed due to query exceeds maximum length (MaxSqlLen config parameter). DSC_ERR_004_049 Thread count entered in the Gaussdb.properties is not valid. Wrapper DSC_ERR_005_003 Reading file Failed with error: File not found Exception. DSC_ERR_005_004 Reading file Failed with error: IOException. DSC_ERR_005_005 Root privileged users are not allowed to execute the DSC tool. DSC_ERR_005_006 Error while getting the id of os user used to execute the DSC tool. DSC_ERR_005_007 Arguments specified is not valid, please check the user manual for the command line arguments. DSC_ERR_005_008 File name is not specified for reading the encoding type. DSC_ERR_005_009 Invalid argument specified for the encoding parameter. DSC_ERR_005_010 Source database is not set. Please enter a valid source db and refer the user manual for syntax. DSC_ERR_005_011 Commandline database specified for source to target is not supported by the DSC tool. DSC_ERR_005_012 Error in loading config file with IOException. DSC_ERR_005_013 Initial JVM memory is greater than maximum JVM memory. DSC_ERR_005_014 Invalid value specified for configValue. DSC_ERR_005_015 Invalid source database specified for source-db option. DSC_ERR_005_016 Invalid target database specified for target-db option. DSC_ERR_005_017 Invalid conversion type specified for dsc-type option. DSC_ERR_005_018 Invalid application language specified for application-lang option. DSC_ERR_005_019 Conversion-type should be DDL for application-lang type as perl. DSC_ERR_005_020 Source-db should be teradata for application-lang type as perl. DSC_ERR_005_021 Please use "-VN [V1R7 | V1R8_330]" or "--version-number [V1R7 | V1R8_330]" to specify the kernel version which can be either V1R7 or V1R8_330. DSC_ERR_005_022 Input directory does not exist. DSC_ERR_005_023 Getting path for input directory failed with IOException. DSC_ERR_005_024 Getting path for output directory failed with IOException. DSC_ERR_005_025 Setting file permission for output directory failed with IOException. DSC_ERR_005_026 Creating output directory failed. DSC_ERR_005_027 Setting file permissions for log directory/file failed with FileException. DSC_ERR_005_028 Error while connecting to GaussDB, Failed with error. DSC_ERR_005_029 Error occurred due to file permission while creating or executing the file. DSC_ERR_005_030 No arguments specified in the commandline. DSC_ERR_005_031 Error occurred in creating output directory.
  • MULTISET MULTISET是一个普通表,所有数据库都支持这个表。迁移工具同时支持MULTISET和SET表。 MULTISET表支持与VOLATILE一起使用。 输入:CREATE MULTISET TABLE 1 CREATE VOLATILE MULTISET TABLE T1 (c1 int ,c2 int); 输出: 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE T1 ( c1 INTEGER ,c2 INTEGER ) ; 父主题: 表迁移
  • CREATE TABLE Teradata的CREATE TABLE (缩写关键字为CT)语句用于创建表。 示例: 输入:CREATE TABLE 1 2 3 CT tab1 ( id INT ); 输出: 1 2 3 4 5 6 CREATE TABLE tab1 ( id INTEGER ) ; 执行CREATE tab2 AS tab1时,从tab1中复制的结构将用于创建表tab2。如果CREATE TABLE语句包含WITH DATA选项,则会将tab1的数据也复制到tab2中。使用CREATE AS时,源表中的CONSTRAINT行将保留在新表中。 如果•session_mode设为Teradata,则必须删除目标表中的重复记录。该操作通过在迁移脚本中添加MINUS运算符实现。 如果•session_mode设为ANSI,则允许目标表中存在重复记录。 如果源表具有PRIMARY KEY(主键)或UNIQUE CONSTRAINT(唯一约束),则该表不包含任何重复记录。在这种情况下,不需要添加MINUS操作符删除重复的记录。 示例: 输入:CREATE TABLE AS WITH DATA(session_mode=Teradata) 1 2 CREATE TABLE tab2 AS tab1 WITH DATA; 输出: 1 2 3 4 5 6 7 8 9 10 11 BEGIN CREATE TABLE tab2 ( LIKE tab1 INCLUDING ALL EXCLUDING PARTITION EXCLUDING RELOPTIONS ); INSERT INTO tab2 SELECT * FROM tab1 MINUS SELECT * FROM tab2; END ; / 输入:CREATE TABLE AS WITH DATA AND STATISTICS 1 2 3 4 CREATE SET VOLATILE TABLE tab2025 AS ( SELECT * from tab2023 ) WITH DATA AND STATISTICS PRIMARY INDEX (LOGTYPE, OPERSEQ); 输出: 1 2 3 4 5 CREATE LOCAL TEMPORARY TABLE tab2025 DISTRIBUTE BY HASH ( LOGTYPE, OPERSEQ ) AS ( SELECT * FROM tab2023 ); ANALYZE tab2025; 父主题: 表迁移
  • COLUMN STORE 表的存储方式可使用CREATE TABLE语句中的WITH(ORIENTATION=COLUMN)从ROW-STORE转换为COLUMN存储。可使用rowstoreToColumnstore参数启用/禁用此功能。 输入:CREATE TABLE,修改存储模式为 COLUMN STORE 1 2 3 4 5 6 7 CREATE MULTISET VOLATILE TABLE tab1 ( c1 VARCHAR(30) CHARACTER SET UNICODE , c2 DATE , ... ) PRIMARY INDEX (c1, c2) ON COMMIT PRESERVE ROWS; 输出: 1 2 3 4 5 6 7 CREATE LOCAL TEMPORARY TABLE tab1 ( c1 VARCHAR(30) , c2 DATE , ... ) WITH (ORIENTATION = COLUMN) ON COMMIT PRESERVE ROWS DISTRIBUTE BY HASH (c1, c2); 父主题: 表迁移
  • TRANSACTION DSC工具在迁移MySQL事务处理语句时会根据GaussDB(DWS)特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ##该声明仅适用于会话中执行的下一个单个事务 SET TRANSACTION ISOLATION LEVEL READ COMMITTED; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET TRANSACTION READ ONLY; SET TRANSACTION READ WRITE; SET TRANSACTION ISOLATION LEVEL READ COMMITTED,READ ONLY; SET TRANSACTION ISOLATION LEVEL SERIALIZABLE,READ WRITE; ##使用SESSION关键字,适用于当前会话中执行的所有后续事务 START TRANSACTION; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE; commit ; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 --该声明仅适用于会话中执行的下一个单个事务 SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED; SET LOCAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; SET LOCAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SET LOCAL TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET LOCAL TRANSACTION READ ONLY; SET LOCAL TRANSACTION READ WRITE; SET LOCAL TRANSACTION ISOLATION LEVEL READ COMMITTED READ ONLY; SET LOCAL TRANSACTION ISOLATION LEVEL SERIALIZABLE READ WRITE; --使用SESSION关键字,适用于当前会话中执行的所有后续事务 START TRANSACTION; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL READ COMMITTED; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE; SET SESSION CHARACTERISTICS AS TRANSACTION ISOLATION LEVEL SERIALIZABLE; COMMIT WORK; 父主题: 事务管理
  • TITLE和CREATE VIEW 输入: REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS SELECT AUM_DATE (TITLE ' ') ,CLNTCODE (TITLE ' ') ,ACCTYPE (TITLE ' ') ,CCY (TITLE ' ') ,BAL_AMT (TITLE ' ') ,MON_BAL_AMT (TITLE ' ') ,HK_CLNTCODE (TITLE ' ') ,MNT_DATE (TITLE ' ') FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; it should be migrated as below: CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC}; 输出: CREATE OR REPLACE VIEW ${STG_VIEW}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} AS /*LOCK TABLE ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC} FOR ACCESS */ SELECT AUM_DATE /* (TITLE ' ') */ ,CLNTCODE /* (TITLE ' ') */ ,ACCTYPE /* (TITLE ' ') */ ,CCY /* (TITLE ' ') */ ,BAL_AMT /* (TITLE ' ') */ ,MON_BAL_AMT /* (TITLE ' ') */ ,HK_CLNTCODE /* (TITLE ' ') */ ,MNT_DATE /* (TITLE ' ') */ FROM ${STG_DATA}.B971_AUMSUMMARY${TABLE_SUFFIX_INC};
  • CHECK OPTION 通过tdMigrateVIEWCHECKOPTIO....参数可以配置如何迁移包含CHECK OPTION关键字的视图。 如果源数据库中出现含有CHECK OPRTION关键词的视图,则工具在目标数据库中注释掉CHECK OPRTION。 输入:VIEW,使用CHECK OPTION 1 2 3 4 5 6 CV mgr15 AS SEL * FROM employee WHERE manager_id = 15 WITH CHECK OPTION ; 输出:(tdMigrateVIEWCHECKOPTION=True) 1 2 3 4 5 6 7 8 9 10 CREATE OR REPLACE VIEW mgr15 AS ( SELECT * FROM employee WHERE manager_id = 15 /*WITH CHECK OPTION */ ) ; 输出:(tdMigrateVIEWCHECKOPTION=False) 1 2 3 4 5 6 CV mgr15 AS SEL * FROM employee WHERE manager_id = 15 WITH CHECK OPTION ;
  • REPLACE FUNCTION 输入: REPLACE FUNCTION up_load1.RPT_016_BUS_DATE() RETURNS DATE LANGUAGE SQL CONTAINS SQL DETERMINISTIC SQL SECURITY DEFINER COLLATION INVOKER INLINE TYPE 1 RETURN DATE'2017-08-22'; 输出: CREATE OR REPLACE FUNCTION up_load1.RPT_016_BUS_DATE() RETURNS DATE LANGUAGE SQL IMMUTABLE SECURITY DEFINER AS $$ SELECT CAST('2017-08-20' AS DATE) $$ ;
  • VIEW WITH ACCESS LOCK 通过tdMigrateLOCKOption参数可以配置如何迁移包含LOCK关键字的查询。如果tdMigrateLOCKOption设置为false,则该工具在迁移时将跳过该查询并记录日志。 输入:VIEW,使用ACCESS LOCK 1 2 3 4 5 6 7 8 CREATE OR REPLACE VIEW DP_SVMEDW.S_LCR_909_001_LCRLOAN AS LOCK TABLE DP_STEDW.S_LCR_909_001_LCRLOAN FOR ACCESS FOR ACCESS ( SELECT RUN_ID, PRODUCT_ID, CURRENCY , CASHFLOW, ENTITY, LCR , TIME_BUCKET, MT, Ctl_Id , File_Id, Business_Date FROM DP_STEDW.S_LCR_909_001_LCRLOAN ) ; 输出: 1 2 3 4 5 6 7 8 CREATE OR REPLACE VIEW DP_SVMEDW.S_LCR_909_001_LCRLOAN AS /* LOCK TABLE DP_STEDW.S_LCR_909_001_LCRLOAN FOR ACCESS */ ( SELECT RUN_ID, PRODUCT_ID, CURRENCY , CASHFLOW, ENTITY, LCR , TIME_BUCKET, MT, Ctl_Id , File_Id, Business_Date FROM DP_STEDW.S_LCR_909_001_LCRLOAN ) ; dbc.columnsV 输入: SELECT A.ColumnName AS V_COLS ,A.columnname || ' ' ||CASE WHEN columnType in ('CF','CV') THEN CASE WHEN columnType='CV' THEN 'VAR' ELSE '' END||'CHAR('||TRIM(columnlength (INT))|| ') CHARACTER SET LATIN'|| CASE WHEN UpperCaseFlag='N' THEN ' NOT' ELSE '' END || ' CASESPECIFIC' WHEN columnType='DA' THEN 'DATE' WHEN columnType='TS' THEN 'TIMESTAMP(' || TRIM(DecimalFractionalDigits)||')' WHEN columnType='AT' THEN 'TIME('|| TRIM(DecimalFractionalDigits)||')' WHEN columnType='I' THEN 'INTEGER' WHEN columnType='I1' THEN 'BYTEINT' WHEN columnType='I2' THEN 'SMALLINT' WHEN columnType='I8' THEN 'BIGINT' WHEN columnType='D' THEN 'DECIMAL('||TRIM(DecimalTotalDigits)||','||TRIM(DecimalFractionalDigits)||')' ELSE 'Unknown' END||CASE WHEN Nullable='Y' THEN '' ELSE ' NOT NULL' END||'0A'XC AS V_ColT ,D.ColumnName AS V_PICol --获得目标表主索引 FROM dbc.columnsV A LEFT JOIN dbc.IndicesV B ON A.columnName = B.columnName AND B.IndexType IN ('Q','P') AND B.DatabaseName = '${V_TDDLDB}' AND B.tablename='${TARGET_TABLE}' WHERE A.databasename='${V_TDDLDB}' AND A.tablename = '${TARGET_TABLE}' AND A.columnname NOT IN ( 'ETL_JOB_NAME' ,'ETL_TX_DATE' , 'ETL_PROC_DATE' )ORDER BY A.columnid; 输出: D DECLARE lv_mig_V_COLS TEXT; lv_mig_V_ColT TEXT; lv_mig_V_PICol TEXT; BEGIN SELECT STRING_AGG(A.ColumnName, ',') , STRING_AGG(A.columnname || ' ' ||CASE WHEN columnType in ('CF','CV') THEN CASE WHEN columnType='CV' THEN 'VAR' ELSE '' END||'CHAR('||TRIM(mig_td_ext.mig_fn_castasint(columnlength))|| ') /*CHARACTER SET LATIN*/'|| CASE WHEN UpperCaseFlag='N' THEN ' NOT' ELSE '' END || ' /*CASESPECIFIC*/' WHEN columnType='DA' THEN 'DATE' WHEN columnType='TS' THEN 'TIMESTAMP(' || TRIM(DecimalFractionalDigits)||')' WHEN columnType='AT' THEN 'TIME('|| TRIM(DecimalFractionalDigits)||')' WHEN columnType='I' THEN 'INTEGER' WHEN columnType='I1' THEN 'BYTEINT' WHEN columnType='I2' THEN 'SMALLINT' WHEN columnType='I8' THEN 'BIGINT' WHEN columnType='D' THEN 'DECIMAL('||TRIM(DecimalTotalDigits)||','||TRIM(DecimalFractionalDigits)||')' ELSE 'Unknown' END||CASE WHEN Nullable='Y' THEN '' ELSE ' NOT NULL' END||E'\x0A', ',') , STRING_AGG(B.ColumnName, ',') INTO lv_mig_V_COLS, lv_mig_V_ColT, lv_mig_V_PICol FROM mig_td_ext.vw_td_dbc_columnsV A LEFT JOIN mig_td_ext.vw_td_dbc_IndicesV B ON A.columnName = B.columnName AND B.IndexType IN ('Q','P') AND B.DatabaseName = 'public' AND B.tablename='emp2' WHERE A.databasename='public' AND A.tablename = 'emp2'; -- ORDER BY A.columnid; END; /
  • REPLACE VIEW 在Teradata中,REPLACE VIEW语句用于创建新视图,或重建现有视图。DSC将其迁移为GaussDB T、GaussDB A 和 DWS中兼容的CREATE OR REPLACE VIEW语句中。 输入:REPLACE VIEW 1 2 3 4 5 6 7 REPLACE VIEW DP_STEDW.MY_PARAM AS SELECT RUNDATE FROM DP_STEDW.DATE_TBL WHERE dummy = 1 ; 输出: 1 2 3 4 5 6 7 8 9 10 CREATE OR REPLACE VIEW DP_STEDW.MY_PARAM AS ( SELECT RUNDATE FROM DP_STEDW.DATE_TBL WHERE dummy = 1 ) ; 输入:REPLACE RECURSIVE VIEW 1 2 3 4 5 6 Replace RECURSIVE VIEW reachable_from ( emp_id,emp_name,DEPTH) AS ( SELECT root.emp_id,root.emp_name,0 AS DEPTH FROM emp AS root WHERE root.mgr_id IS NULL); 输出: 1 2 3 4 5 6 7 8 CREATE OR REPLACE VIEW reachable_from AS ( WITH RECURSIVE reachable_from ( emp_id,emp_name,DEPTH) AS ( SELECT root.emp_id,root.emp_name,0 AS DEPTH FROM emp AS root WHERE root.mgr_id IS NULL ) SELECT * FROM reachable_from);
  • LOCK DSC工具在迁移MySQL 事务处理锁表语句时会根据GaussDB(DWS)特性进行相应适配。 输入示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ## A. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` WRITE,`mt`.`runoob_tb2` READ; commit; ## B. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` WRITE; commit; ## C. START TRANSACTION; LOCK TABLES `mt`.`runoob_tbl` READ,`mt`.`runoob_tbl` AS t1 READ; commit; 输出示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 -- A. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS EXCLUSIVE MODE; LOCK TABLE "mt"."runoob_tb2" IN ACCESS SHARE MODE; COMMIT WORK; -- B. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS EXCLUSIVE MODE; COMMIT WORK; -- C. START TRANSACTION; LOCK TABLE "mt"."runoob_tbl" IN ACCESS SHARE MODE; COMMIT WORK; 父主题: 事务管理
  • FORMAT和CAST Teradata中,关键词FORMAT用于格式化列或表达式。例如,LPAD中FORMAT '9(n)'和'z(n)'分别用'0'和空格(' ')表示。 数据类型转换可使用CAST或直接数据类型([like (expression1)(CHAR(n))])进行。该功能使用CAST实现。详情参见类型转换和格式化。 输入:FORMAT和CAST 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 SELECT CAST(TRIM( Agt_Num ) AS DECIMAL( 5 ,0 ) FORMAT '9(5)' ) FROM C03_AGENT_BOND ; SELECT CAST(CAST( Agt_Num AS INT FORMAT 'Z(17)' ) AS CHAR( 5 ) ) FROM C03_AGENT_BOND ; SELECT CHAR(CAST( CAST( CND_VLU AS DECIMAL( 17 ,0 ) FORMAT 'Z(17)' ) AS VARCHAR( 17 ) ) ) FROM C03_AGENT_BOND ; 输出: SELECT LPAD( CAST( TRIM( Agt_Num ) AS DECIMAL( 5 ,0 ) ) ,5 ,'0' ) AS Agt_Num FROM C03_AGENT_BOND ; SELECT CAST(CAST( Agt_Num AS INT FORMAT 'Z(17)' ) AS CHAR( 5 ) ) FROM C03_AGENT_BOND ; SELECT LENGTH( CAST( LPAD( CAST( CND_VLU AS DECIMAL( 17 ,0 ) ) ,17 ,' ' ) AS VARCHAR( 17 ) ) ) AS CND_VLU FROM C03_AGENT_BOND ; 输入:FORMAT 'Z(n)9' 1 2 3 4 5 6 SELECT standard_price (FORMAT 'Z(5)9') (CHAR( 6 )) ,max_price (FORMAT 'ZZZZZ9') (CHAR( 6 )) FROM product_t ; 输出: 1 2 3 4 5 6 SELECT CAST( TO_CHAR( standard_price ,'999990' ) AS CHAR( 6 ) ) AS standard_price ,CAST( TO_CHAR( max_price ,'999990' ) AS CHAR( 6 ) ) AS max_price FROM product_t ; 输入:FORMAT 'z(m)9.9(n)' 1 2 3 4 5 SELECT standard_price (FORMAT 'Z(6)9.9(2)') (CHAR( 6 )) FROM product_t ; 输出: 1 2 3 4 5 SELECT CAST( TO_CHAR( standard_price ,'9999990.00' ) AS CHAR( 6 ) ) AS standard_price FROM product_t ; 输入:CAST AS INTEGER 1 2 3 4 5 SELECT CAST( standard_price AS INTEGER ) FROM product_t ; 输出: 1 2 3 4 5 SELECT (standard_price) FROM product_t ; 输入:CAST AS INTEGER FORMAT 1 2 3 4 5 6 7 SELECT CAST( price11 AS INTEGER FORMAT 'Z(4)9' ) ( CHAR( 10 ) ) FROM product_t ; 输出: 1 2 3 4 5 SELECT CAST( TO_CHAR( ( price11 ) ,'99990' ) AS CHAR( 10 ) ) AS price11 FROM product_t ; 新增以下Gauss函数来转换为INTEGER: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 CREATE OR REPLACE FUNCTION /* This function is used to support "CAST AS INTEGER" of Teradata. It should be created in the "mig_td_ext" schema. */ ( i_param TEXT ) RETURN INTEGER AS v_castasint INTEGER; BEGIN v_castasint := CASE WHEN i_param IS NULL THEN NULL -- if NULL value is provided as input WHEN TRIM(i_param) IS NULL THEN 0 -- if empty string with one or more spaces is provided ELSE TRUNC(CAST(i_param AS NUMBER)) -- if any numeric value is provided END; RETURN v_castasint; END; 父主题: 查询迁移操作符
  • 创建带索引分区表 如果配置参数tdMigrateRANGE_N为true。 输入: CREATE SET TABLE SC.TAB , NO FALLBACK, NO BEFORE JOURNAL, NO AFTER JOURNAL, CHECKSUM=DEFAULT, DEFAULT MERGEBLOCKRATIO ( ACCOUNT_NUM VARCHAR(255) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR(18) CHARACTER SET LATIN NOT CASESPECIFIC NOT NULL ,END_DT DATE FORMAT 'YYYY-MM-DD' ,UPD_TXF_BATCHTD INTEGER COMPRESS ) PRIMARY INDEX XPKT0300_AGREEMENT (ACCOUNT_NUM,ACCOUNT_MODIFIER_NUM) PARTITION BY RANGE_N(END_DT BETWEEN '2001-01-01' AND '2020-12-31' EACH INTERVAL '1' DAY, NO RANGE ,UNKNOWN) INDEX (UPD_TXF_BATCHTD) ; 输出: CREATE TABLE SC.TAB ( ACCOUNT_NUM VARCHAR( 255 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,ACCOUNT_MODIFIER_NUM CHAR( 18 ) /* CHARACTER SET LATIN*/ /* NOT CASESPECIFIC*/ NOT NULL ,END_DT DATE ,UPD_TXF_BATCHTD INTEGER /* COMPRESS */ ) DISTRIBUTE BY HASH ( ACCOUNT_NUM ,ACCOUNT_MODIFIER_NUM ) PARTITION BY RANGE (END_DT) ( PARTITION TAB_1 start ('2001-01-01') END ('2020-12-31') EVERY ( INTERVAL '1' DAY ) ) ; CREATE INDEX ON SC.TAB (UPD_TXF_BATCHTD) LOCAL;
共100000条