摘要:本文介绍的DSC工具是针对数据库切换时面临的迁移任务而开发的免安装命令行工具。目的是提供简单、快速、可靠的SQL脚本迁移服务。

本文分享自华为云社区《GaussDB(DWS)DSC工具系列:DSC工具初识【玩转PB级数仓GaussDB(DWS)】》,作者:积少成多 。

DSC背景介绍与DSC介绍

当客户从其它数据库切换到DWS数据库时可能会面临迁移任务,其中包括SQL脚本的迁移。SQL脚本的迁移是一个复杂、高风险、耗时的过程。DSC针对这种情况,应运而生。DSC(Database Schema Convertor)是一款可执行在Linux或Windows操作系统上的命令行工具。其目的便是提供简单、快速、可靠的SQL脚本迁移服务,通过内置语法迁移逻辑将源数据库SQL脚本转换为适用于DWS数据库的SQL脚本。

DSC的获取与安装

DSC的获取可参考华为云文档:客户端工具下载(https://support.huaweicloud.com/tg-dws/dws_07_0002.html)。官网提供DSC旧版本,新版DSC工具可通过support进行下载。(https://support.huawei.com/enterprise/zh/cloud-computing/hcs-dws-service-pid-251527524/software/258068937/?idAbsPath=fixnode01|22658044|7919788|9856606|251527524)

DSC是一款免安装工具,下载压缩包后解压缩即可使用。关于DSC还有一些相关的硬件、软件需求,详情可以参考DSC的官方文档进行了解。(https://support.huaweicloud.com/tg-dws/mt_tool_index.html)

DSC结构

DSC包含7个文件夹,一个runDSC.bat批处理可执行文件和一个runDSC.sh脚本文件。runDSC用于调用执行DSC程序。

DSC目录结构文件如下:

界面即为命令行界面,切换路径至runDSC.bat/runDSC.sh的同级目录即可。其中bin文件夹下存储DSC转换逻辑的jar包,最终实现脚本转换就是通过调用jar包实现。config文件夹下包含一些基础配置,包含用户可自定义配置迁移的文件。模块包括MySQL、TD、Oracle,涉及自定义迁移内容根据模块不同内容也不尽相同。MySQL模块中,自定义配置内容包括默认数据库名称、索引名重命名、数据映射规则、函数转换等内容。TD、Oracle中针对迁移过程中的不兼容语法也有相应配置参数。lib文件夹下包含DSC使用的外部依赖。log文件夹下留存DSC转换过程中的日志记录,包括dsc迁移日志和迁移失败日志。日志不会自动清空,每次执行DSC会对日志进行追加写。下次执行DSC命令时,需要手动删除文件夹内内容进行日志清空。input文件夹下存放要进行迁移的SQL脚本,output文件夹下为DSC进行转换后的SQL脚本结果。scripts文件夹下包含一些自定义数据库脚本,用户可以使用自定义数据库的SQL脚本从Teradata/Oracle迁移那些不直接存在于目标数据库的关键字。如果需要用到,迁移之前,这些脚本必须在每个目标数据库中执行一次。

DSC使用

用户可在Windows和Linux操作系统中执行runDSC.sh或runDSC.bat命令进行迁移,命令格式如下:

./runDSC.sh 相关命令行参数(Linux操作系统) / runDSC.bat 相关命令行参数(Windows操作系统)

相关命令行参数包括以下8个:

DSC执行流程如下:

先根据源库内容进行自定义功能配置,包括是否需要执行scripts目录中包含一些自定义数据库脚本,配置config中的自定义参数。然后命令行执行启动命令,进行脚本SQL转换,最后从输出目录获取结果。如果迁移过程遇到问题,可以查看日志。

结果展示界面(以MySQL为例):

MySQL迁移中,界面会显示迁移路径下总文件数,有效文件数,迁移成功文件数和迁移失败文件数以及日志存放路径。不同模块下显示界面略有差异。

转换结果展示(左为源文件内SQL,右为经DSC转换后的结果):

常见问题汇总、归纳以及解决办法

常见故障处理可见DSC官方手册《DSC故障处理》一节。

在使用过程中常见的问题有以下几个可供参考:

1、在安装过程中,提示“ Root privileged users are not allowed to install the DSC for Linux. ”

解决办法:拥有root权限的用户不得在Linux中安装和执行DSC。建议使用没有root权限的用户来安装和操作DSC。

2、转换结果中中文有乱码

解决办法:修改config中对应模块下的编码方式。以MySQL为例,修改config/features-mysql.properties中的table.database.encoding参数。以及建议将input路径下的文件改为UTF8编码方式规避中文乱码。

3、SQL存在转换失败的问题:DSC手册中记录可转换的内容转换失败或转换错误。

解决办法:先尝试通过support获取最新DSC工具,尝试问题是否解决,如果问题未解决可联系相关维护人员支撑。

点击关注,第一时间了解华为云新鲜技术~

DSC:数仓SQL脚本迁移的神奇工具的更多相关文章

  1. 【离线数仓CDH版本】即席查询工具(Presto、Druid、Kylin)、CDH数仓、Impala查询

    1.即席查询 一.Presto 大数据量.秒级.多数据源的查询引擎[支持各种数据源work的内存级查询] 由coordinator和多个work构成,work对应不同数据源Catalog 特点:基于内 ...

  2. 【大数据课程】高途课程实践-Day02:利用Hive SQL编写离线数仓实现可视化展示

    〇.概述 1.实现内容 使用Hive SQL编程,构造分层离线数仓 并可以通过Quick Bi进行展示 2.过程 (1)数据接⼊到ODS层 (2)进⾏ODS到DWD层数据开发 (3)进⾏ODS到DIM ...

  3. 【大数据面试】【框架】Linux命令、Shell工具、常见Shell脚本(群起脚本、数仓导入)

    一.Linux 1.常用高级命令 ps -ef:查看进程详情,ps -ef|grep dae可以搜索指定进程,-e表示环境变量 ps -au:以用户为主的详细格式,显示进程平均占用资源,不包括cmd列 ...

  4. SQL中迁移sql用户及密码脚本

    SQL中迁移sql用户及密码脚本   编写人:CC阿爸 2014-6-20 在日常SQL数据库的操作中,常常需要迁移数据库或重装服务器,这时候,一些之前建立的login账户,必须重新建立,以下可以通过 ...

  5. 【离线数仓】Day02-用户行为数据仓库:分层介绍、环境搭建(hive、tez)、LZO压缩、建表查询导入加索引、编写脚本

    一.数仓分层概念 1.为什么要分层 ODS:原始数据层 DWD层:明细数据层 DWS:服务数据层 ADS:数据应用层 2.数仓分层 3.数据集市与数据仓库概念 4.数仓命名规范 ODS层命名为odsD ...

  6. SQL数据库从高版本到低版本的迁移,同时解决sql脚本文件太大无法打开的尴尬问题

    as we known,sql数据库高版本向低版本还原是不太可能但是又经常会碰到的事,今天实测了一种方法 步骤:任务—>生成脚本—> 下一步->高级,选择数据库版本和编写脚本数据类型 ...

  7. SQL Server 迁移至MySQL 关键步骤的梳理总结

    迁移主要是通过Navicat工具来实现的.迁移工具的选定在此不讨论. 迁移前准备 1.提前通知DBA\SA\BI等,并确认发布计划及数据库迁移方案. 2.梳理出SQL  Server DB 中影响业务 ...

  8. 数仓1.4 |业务数仓搭建| 拉链表| Presto

    电商业务及数据结构 SKU库存量,剩余多少SPU商品聚集的最小单位,,,这类商品的抽象,提取公共的内容 订单表:周期性状态变化(order_info) id 订单编号 total_amount 订单金 ...

  9. 数仓1.1 分层| ODS& DWD层

    数仓分层 ODS:Operation Data Store原始数据 DWD(数据清洗/DWI) data warehouse detail数据明细详情,去除空值,脏数据,超过极限范围的明细解析具体表 ...

  10. CarbonData:大数据融合数仓新一代引擎

    [摘要] CarbonData将存储和计算逻辑分离,通过索引技术让存储和计算物理上更接近,提升CPU和IO效率,实现超高性能的大数据分析.以CarbonData为融合数仓的大数据解决方案,为金融转型打 ...

随机推荐

  1. Java-Maven实现简单的文件上传下载(菜鸟一枚、仅供参考)

    1.JSP页面代码实现 <%@ page language="java" contentType="text/html; charset=UTF-8" p ...

  2. JAVA-批量下载zip

    案例一 @ApiOperation(value = "根据id 批量下载文件", notes = "根据id 批量下载文件") @RequestMapping( ...

  3. 服务器 安装docker (启动坑了很久才成功)docker-compose

    安装docker: 1.Docker要求CentOS系统的内核版本高于 3.10 ,    通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包: sudo yu ...

  4. CIC滤波器

    CIC滤波器是滑动平均滤波器的非常高效的迭代实现,只需要一个减法和一个加法,而滑动平均需要N-1个加法. cic滤波器相当于一个梳状滤波器y(n)=x(n)-x(n-D),H(z)=1-z-D,和一个 ...

  5. echo 操作

    echo打印制表符到文件: MAP_PATH=/path/for i in `cat sp.list`; do echo -e "${MAP_PATH}/${i}.${i}/${i}.fin ...

  6. linux下使用bt-rm 限速删除文件

    下载限速删除工具: 链接:https://pan.baidu.com/s/1xXu4Hzr99wLlipqxVkXkBg 密码:upbe nohup ./bt-rm -l 10 ${文件地址} &am ...

  7. 2022-07-10 第一小组 张明旭 前端CSS学习记录

    今天是正式学习的第二天,昨天那个作业项目真的难,自己做一会就得问这问那,还有大神带一带(?_?)... 今天学习的内容是前端中的CSS,男上加男..... 知识点: Css层叠式表(网页美化) 1.定 ...

  8. UGUI让自动布局下的子物体不接受布局(LayoutGroup)影响

    在子物体上添加Layout Element组件 看到这个组件上有个Ignore Layout,这个就是忽视布局,把它勾上就可以忽视父级对它的布局了. 转自:https://zhuanlan.zhihu ...

  9. ansible使用笔记:长期更新

    ansible使用笔记 ##将/home/system.sh文件拷贝到所有服务器的/home/system.sh ansible all -m copy -a "src=/home/syst ...

  10. 标记一下CF教育场的网址

    (因为太难翻了,做到哪里标到哪,自用 Educational Codeforces Round 1 Educational Codeforces Round 2 Educational Codefor ...