aster数据脚本按达梦改写问题处理

本文档详细介绍了将Aster数据库脚本转换为达梦数据库脚本的过程,包括环境变量配置、参数设置、表结构差异、SQL语法差异以及数据导入导出的差异。针对分区表、分布表、维度表和分析表的创建和操作进行了对比,并提供了具体的命令示例。此外,还涵盖了时间戳获取、字符串截取等函数的转换,以及SQL执行方式和文件导入导出的方法。这份指南旨在帮助开发者顺利进行数据库迁移和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 脚本改写总结
    1. 变量新增

为方便脚本改写,以及后期维护,请在需要在运行脚本的所有服务器上,调整操作系统用户下面的如下环境变量(修改文件名为:.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'

    1. 表结构差异说明
      1. Fact表
        1. 分布分区表

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')

);

          1. 分区新增

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) ;

          1. 分区删除

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};

        1. 分布表

Aster语法

达梦语法

create [fact] table ...

(
)

distribute by hash(nai)

storage row

;

create  table ...

(

)

partition by hash(nai) PARTITIONS DEFAULT;

      1. 维度表(dimension表)

Aster语法

达梦语法

create dimension table ...

(

)

storage row

;

无维度表

需要根据3.1.4章节内容,进行适应性改造。

建表必须带分布健★★★

      1. 分析表(analytic表)

Aster语法

达梦语法

create analytic table table_name

无分析表 

需要根据3.1.4章节内容,进行适应性改造。

建表必须带分布健★★★

      1. 其他语法差异

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

    1. 语法和函数差异说明
      1. 进制转换

Aster语法

达梦语法

((('x'||eci)::text)::bit(28))::bigint eci

cast(cast(eci as varbinary) as bigint) eci

或者

chartorowid(eci) eci

说明:十六进制转十进制。

      1. 获取时间戳

Aster语法

达梦语法

clock_timestamp()

sysdate

      1. 字符串截取

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

    1. SQL脚本执行方式差异说明

地址写生产的 定死)

账号用当前的 密码星号

      1. 执行语句

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"

      1. 执行脚本

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.

    1. 文件导入导出差异说明
      1. 单个文件导入

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

      1. 整个目录下文件导入

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

      1. 装载多个目录下面所有文件

数据目录:

/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

      1. 表数据导出

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

 

达梦数据库 - 新一代大型通用关系型数据库 | 达梦云适配中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值