- 脚本改写总结
- 变量新增
为方便脚本改写,以及后期维护,请在需要在运行脚本的所有服务器上,调整操作系统用户下面的如下环境变量(修改文件名为:.bash_profile):
达梦客户端安装(文件解压)目录为/home/dmdba/dm8_dpc/bin,则进行如下配置:
export dm_bin=/home/dmdba/dm8_dpc/bin export PATH=$dm_bin:$PATH: export LD_LIBRARY_PATH=$dm_bin:$LD_LIBRARY_PATH export dmfldr_para="READ_ROWS=10000000 BUFFER_NODE_SIZE=100 BDTA_SIZE=10000 ROW_SEPERATOR=X '0D0A' CHARACTER_CODE='UTF-8' FIELD_SEPERATOR='|' MODE='IN'" |
生效变量:
source .bash_profile |
dmfldr_para变量中的值在导入和导出的时候,需要设置的参数和全局设置有冲突,可以在命令最后添加我们实际需要的参数(参数以后面新配置的参数为准),例如:
dmfldr userid=EDC_WG_CMCC/**********@$ip data=\'$data\' TABLE=zlz $dmfldr_para CHARACTER_CODE=\'GBK\'; |
说明:只需要在尾部添加自己需要的参数即可,参数以后面的为准。
达梦dpc在文件导入过程中,常用参数和解释如下:
1. data参数用来指定数据文件,TABLE 用来指定装载的表 2. ROW_SEPERATOR 行分隔符,其中: # CRLF表示回车换行,ROW_SEPERATOR=X '0D0A' # LF 表示换行,ROW_SEPERATOR=X '0A' 3. FIELD_SEPERATOR 列分隔符 4. CHARACTER_CODE 文本数据的字符集 # ASCII 表示字符集为GBK,UTF-8、Unicode表示UTF-8 5. ERRORS 允许的最大容错个数。指定为 -1,表示不限制最大容错个数;指定为0,表示不允许任何错误。 6. SKIP 跳过文本的最初的几行数据,默认为0。 7. LOG 装载日志文件的输出路径。不指定,在运行脚本的目录生成fldr.log 8. BADFILE 错误数据记录文件。不指定,在运行脚本的目录生成fldr.bad 9. MODE 装载方式,IN 表示载入,OUT 表示载出。 10. 还有许多参数,详见手册。 11. READ_ROWS=10000000 BUFFER_NODE_SIZE=100 BDTA_SIZE=10000 这几个参数,经测试,这么指定性能较好,不建议调整。 如下命令为使用file命令查看T_DNS文本文件的属性: [root@RS1815 T_DNS]# file T_DNS T_DNS: ASCII text, with CRLF line terminators ASCII 表示字符集为GBK,UTF-8 Unicode表示UTF-8 CRLF 表示文本数据的换行符为 回车换行 # CRLF表示回车换行,ROW_SEPERATOR=X '0D0A' # LF 表示 换行,ROW_SEPERATOR=X '0A' |
-
- 表结构差异说明
- Fact表
- 分布分区表
- Fact表
- 表结构差异说明
Aster语法 | 达梦语法 |
create [fact] table ... ( ) distribute by hash(nai) storage row partition by list(date_id) ( partition p20210626 (VALUES ( '20210626' ) nocompress) ,partition p20210629 (VALUES ( '20210629' ) nocompress) ); | create table ... ( ) partition by list(date_id) SUBPARTITION by hash(nai) SUBPARTITIONS default ( partition p20210626 VALUES ('20210626' ) ,partition p20210629 VALUES ( '20210629') ); |
-
-
-
-
- 分区新增
-
-
-
Aster语法 | 达梦语法 |
alter table edc_wg_cmcc.f_broadband_all_user_day_cjj add partition p20211207 (values(20211207)); | alter table edc_wg_cmcc.f_broadband_all_user_day_cjj add partition p20211207 values (20211207) ; |
-
-
-
-
- 分区删除
-
-
-
Aster语法 | 达梦语法 |
alter table edc_wg_cmcc.chenxi_jiakuan_onu_power_user_day drop partition (p${datet}); | alter table edc_wg_cmcc.chenxi_jiakuan_onu_power_user_day drop partition p${datet}; |
-
-
-
- 分布表
-
-
Aster语法 | 达梦语法 |
create [fact] table ... ( distribute by hash(nai) storage row ; | create table ... ( ) partition by hash(nai) PARTITIONS DEFAULT; |
-
-
- 维度表(dimension表)
-
Aster语法 | 达梦语法 |
create dimension table ... ( ) storage row ; | 无维度表 需要根据3.1.4章节内容,进行适应性改造。 建表必须带分布健★★★ |
-
-
- 分析表(analytic表)
-
Aster语法 | 达梦语法 |
create analytic table table_name | 无分析表 需要根据3.1.4章节内容,进行适应性改造。 建表必须带分布健★★★ |
-
-
- 其他语法差异
-
Aster语法 | 达梦语法 |
CREATE TABLE T1(NAI VARCHAR(100)) AS SELECT NAI FROM T2 WHERE 0=1; | CREATE TABLE T1 AS SELECT NAI FROM T2 WHERE 0=1; |
说明:其他CREATE TABLE 带自定义字段的写法,在达梦上需要删掉自定义字段的内容。
如果必须要自定义的话,按以下写法
Aster语法 | 达梦语法 |
CREATE TABLE T1 (NAI VARCHAR(100)) AS SELECT NAI FROM T2 ; | CREATE TABLE T1 (NAI VARCHAR(100)); insert into T1 SELECT NAI FROM T2 |
-
- 语法和函数差异说明
- 进制转换
- 语法和函数差异说明
Aster语法 | 达梦语法 |
((('x'||eci)::text)::bit(28))::bigint eci | cast(cast(eci as varbinary) as bigint) eci 或者 chartorowid(eci) eci |
说明:十六进制转十进制。
-
-
- 获取时间戳
-
Aster语法 | 达梦语法 |
clock_timestamp() | sysdate |
-
-
- 字符串截取
-
Aster语法 | 达梦语法 |
split_part(replace(upper(bandwidth),'M',''),'|',1)::int as bandwidth | substring_INDEX(replace(upper(bandwidth),'M',''),'|',1)::int as bandwidth |
说明:
语法:substring_index (char, delim, count)
功能:按关键字截取字符串,截取到指定分隔符出现指定次数位置之前。
例:
SELECT SUBSTRING_INDEX('blog.jb51.net', '.', 2);
返回值:blog.jb51
-
- SQL脚本执行方式差异说明
地址写生产的 定死)
账号用当前的 密码星号
-
-
- 执行语句
-
Aster语法 | 达梦语法 |
/home/wg_cmcc/act -d beehive -h 10.48.234.45 -U edc_wg_cmcc -w Wg_cmcc1# -c $"$AsqL1" | $dm_bin/disql EDC_WG_CMCC/**********@dm_server -E "$AsqL1" |
-
-
- 执行脚本
-
Aster语法 | 达梦语法 |
/home/wg_cmcc/act -d beehive -h 10.48.234.45 -U edc_wg_cmcc -w "Wg_cmcc1#" -f ${sqlFileTemp} | $dm_bin/disql EDC_WG_CMCC/**********@dm_server <<EOF start ${sqlFileTemp} EOF |
说明:${sqlFileTemp}文件中,最后一行,必须为EXIT.
-
- 文件导入导出差异说明
- 单个文件导入
- 文件导入导出差异说明
Aster语法 | 达梦语法 |
/home/wg_cmcc/ncluster_loader -h 10.48.234.45 -f -l 10.48.234.53 -U edc_wg_cmcc -w Wg_cmcc1# -d beehive -D ',' --el-discard-error -n '' -c f_broadband_all_user_day_cjj_to_yezhi_${target_day} /home/wg_cmcc/fzxtemp/NAT444Data/NATData/$datet.csv | $dm_bin/dmfldr userid=EDC_WG_CMCC/**********@dm_server TABLE=f_broadband_all_user_day_cjj_to_yezhi_${target_day} data=\' /home/wg_cmcc/fzxtemp/NAT444Data/NATData/$datet.csv\' $dmfldr_para |
-
-
- 整个目录下文件导入
-
Aster语法 | 达梦语法 |
目录形式导入: httpinputfiles="/gpfsnew/wg_cmcc/gn/output/chenxi/gn_chenxi_HttpIpMixApnFilter_${workday}/${workhour}/ip/" /home/wg_cmcc/ncluster_loader -h 10.48.234.45 -f -l 10.48.234.53 -U edc_wg_cmcc -w Wg_cmcc1# -d beehive -D '|' --el-enabled --el-discard-error -n '' -c edc_wg_cmcc.gn_http_ip_wwx_${workday} $httpinputfiles | $dm_bin/dmfldr userid=EDC_WG_CMCC/**********@dm_server TABLE=gn_http_ip_wwx_${workday} data=directory\' $httpinputfiles\' $dmfldr_para |
导目录下面文件: inputfiles="/gpfsnew/wg_cmcc/gn/output/chenxi/gn_chenxi_DnsApnFilter_${workday}/${workhour}/*" /home/wg_cmcc/ncluster_loader -h 10.48.234.45 -f -l 10.48.234.53 -U edc_wg_cmcc -w Wg_cmcc1# -d beehive -D '|' --el-enabled --el-discard-error -n '' -c edc_wg_cmcc.gn_dns_wwx_${workday} $inputfiles >>${logfile} | $dm_bin/dmfldr userid=EDC_WG_CMCC/**********@dm_server TABLE=gn_dns_wwx_${workday} data=\' $inputfiles\' $dmfldr_para |
-
-
- 装载多个目录下面所有文件
-
数据目录: /zdata/nginx/download/software/T_DNS/T_DNS1 /zdata/nginx/download/software/T_DNS/T_DNS2 | |
Aster语法 | 达梦语法 |
$dm_bin/dmfldr userid=EDC_WG_CMCC/123456789@$ip data=directory \'/zdata/nginx/download/software/T_DNS/T_DNS1\',\'/zdata/nginx/download/software/T_DNS/T_DNS2\' TABLE='T_DNS' $dmfldr_para |
-
-
- 表数据导出
-
Aster语法 | 达梦语法 |
/home/wg_cmcc/ncluster_export -h 10.48.234.45 -f -l 10.48.234.53 -U edc_wg_cmcc -w Wg_cmcc1# -d beehive -D '|' -n '' -c edc_wg_cmcc.f_chenxi_broadband_user_label_to_yezhi_${target_day} ${dataDir}/jiakuan_user_label_to_yezhi_${target_day}.csv | $dm_bin/dmfldr userid=EDC_WG_CMCC/**********@dm_server TABLE=edc_wg_cmcc.f_chenxi_broadband_user_label_to_yezhi_${target_day} data=\'${dataDir}/jiakuan_user_label_to_yezhi_${target_day}.csv\' MODE='\OUT\' SINGLE_FILE=TRUE |