您现在的位置是:首页 >技术杂谈 >Dataworks抽取HANA数据网站首页技术杂谈

Dataworks抽取HANA数据

码出想要的世界 2023-05-22 20:00:02
简介Dataworks抽取HANA数据

        实施中台离线抽取HANA数据库时可能遇到连接问题、数据抽取速度慢、数据追加和全量导入问题,以及数据准确性和完整性问题。同步过程中,同时注意数据表结构的变化和数据同步的准确性,以提高数据同步的稳定性和效率。


目录

抽取HANA过程中遇到的问题及解决方案,一些思路:

一、HANA抽取时同步收集源库中表结构信息

二、HANA库中表名为 "/TEST/T1" 情况

1.表中配置时Dataworks中配置离线抽取无法识别

2.表中字段上有"/"情况

总结

附:

hdbsql的连接方法:

hdbsql的帮助信息:



抽取HANA过程中遇到的问题及解决方案,一些思路:

DataWorks是阿里云推出的一款数据集成工具,可以实现多种数据源的抽取、清洗、转换和加载,支持一站式集成、数据仓库建设和应用数据服务。在使用DataWorks工具抽取HANA数据时,可能会遇到一些问题。以下是我这边实施出现的情况:


提示:以下是为个人实施案例仅供参考

一、HANA抽取时同步收集源库中表结构信息

这边收集资料并梳理,总结源表结构总共需以下三张:

SYS.TABLES、SYS.TABLE_COLUMNS、SYS.VIEW_COLUMNS

从3个表中获取表数据列情况,字段名称,字段类型,字段长度,字段注释等信息

通过SQL拼接出建表语句

二、HANA库中表名为 "/TEST/T1" 情况

1.表中配置时Dataworks中配置离线抽取无法识别

方案:用脚本模式,配置表名时进行转义

"connection": [
                    {
                        "datasource": "${dag.source}",
                        "table": [
                            ""/TEST/T1""
                        ]
                    }
                ],

参考:SAP HANA数据源

2.表中字段上有"/"情况

方案:用脚本模式,配置字段名时进行转义

"column": [
                   "C1",
                   ""/TRE/C2""
                ],

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

附:

hdbsql的连接方法:

 hdbsql -n 10.10.10.1:30041 -u testuser -p testpasswd

hdbsql的帮助信息:

Welcome to the SAP HANA Database interactive terminal.

Type:  h for help with commands
       q to quit

hdbsql=> h

 ? or h[elp]  show help on internal slash commands
 q[uit]        quit HDBSQL
 c[onnect]     -i <instance number>
                -n <host>[:<port>]
                -d <database name>
                -u <user_name>
                -p <password>
                -U <user_store_key>
                connecting to the database
 di[sconnect]  disconnecting from the database

 mu[ltiline]   [ON|OFF] toggle the multiline mode on or off
 a[utocommit]  [ON|OFF] switch autocommit mode on or off
 m[ode]        [INTERNAL|SAPR3] change SQL mode
 cl[ientinfo]  [property=value[;...]] send client info
 ps            [ON|OFF] toggle the usage of prepared statements on or off
 es            [ON|OFF] toggle the escape output format on or off
 o[utput]      <filename> send all query results to file, double quotes around filename are allowed
 i[nput]       <filename> read input from file, double quotes around filename are allowed
 ie[ncoding]   <encoding> force input encoding, one of "ASCII", "UCS2", "UTF8"

 p[rint]       print out the current query buffer (only multiline mode)
 
[eset]       reset (clear) the query buffer (only multiline mode)
 e[dit]        <filename>  edit the query buffer (or file) with external editor (only multiline mode)
 g[o]          send query buffer to server and print out the results (only multiline mode)
 ;              send query buffer to server and print out the results (only multiline mode)

 al[ign]       [ON|OFF] toggle the aligned output on or off
 pa[ger]       [ON|OFF] toggle page by page scroll output on or off
 f[ieldsep]    <separator> use <separator> as the field separator
 qto           <seconds>
 querytimeout  <seconds> set the query timeout for executed commands to <seconds>
 s[tatus]      print out host, database, user etc.

 dc [PATTERN]  list columns
 de [PATTERN]  list indices
 dp [PATTERN]  list procedures
 ds [NAME]     list schemas
 dt [PATTERN]  list tables
 du [NAME]     list users
 dv [PATTERN]  list views
 [PATTERN] = [OWNER.][OBJECT NAME] eg. <username>.%A%

 vd <variable name> <value>  Define a SQL Script Variable <variable name> to be replaced with <value>
 vu <variable name> <value>  Undefine a previously defined SQL Script Variable <variable name>
 vl list all SQL Script variables that have been defined
 vc clear all SQL Script variables that have been defined
 ve ON|OFF set SQL Script variable escaping with  on or off
 vs ON|OFF turn SQL Script variable replacement on or off
 vp ON|OFF turn SQL Script variable prompting on or off when undefined variables are encountered
hdbsql ERP=> h ? 或 h[elp]  显示内部斜杠命令的帮助
 q[uit]        退出HDBSQL
 c[onnect]     -i <实例号>
                -n <主机>[:<端口>]
                -d <数据库名>
                -u <用户名>
                -p <密码>
                -U <用户存储密钥>
                连接到数据库
 di[sconnect]  断开与数据库的连接

 mu[ltiline]   [ON|OFF] 切换多行模式的开或关
 a[utocommit]  [ON|OFF] 打开或关闭自动提交模式
 m[ode]        [INTERNAL|SAPR3] 更改SQL模式
 cl[ientinfo]  [property=value[;...]] 发送客户端信息
 ps            [ON|OFF] 切换使用预编译语句的开或关
 es            [ON|OFF] 切换转义输出格式的开或关
 o[utput]      <文件名> 将所有查询结果发送到文件,文件名周围可以加双引号
 i[nput]       <文件名> 从文件中读取输入,文件名周围可以加双引号
 ie[ncoding]   <编码> 强制输入编码,可选"ASCII"、"UCS2"、"UTF8"

 p[rint]       打印当前的查询缓冲区(仅在多行模式下)
 
[eset]       重置(清空)查询缓冲区(仅在多行模式下)
 e[dit]        <文件名> 使用外部编辑器(仅在多行模式下)编辑查询缓冲区(或文件)
 g[o]          将查询缓冲区发送到服务器并打印结果(仅在多行模式下)
 ;              将查询缓冲区发送到服务器并打印结果(仅在多行模式下)

 al[ign]       [ON|OFF] 切换对齐输出的开或关
 pa[ger]       [ON|OFF] 切换逐页滚动输出的开或关
 f[ieldsep]    <分隔符> 使用<分隔符>作为字段分隔符
 qto           <秒数>
 querytimeout  <秒数> 设置执行命令的查询超时时间为<秒数>
 s[tatus]      打印出主机、数据库、用户等信息。

 dc [PATTERN]  列出列
 de [PATTERN]  列出索引
 dp [PATTERN]  列出过程
 ds [NAME]     列出模式
 dt [PATTERN]  列出表
 du [NAME]     列出用户
 dv [PATTERN]  列出视图
 [PATTERN] = [OWNER.][OBJECT NAME] 例如:<用户名>.%A%

 vd <变量名> <值>  定义用<值>替换的SQL脚本变量<变量名>
 vu <变量名> <值>  取消定义先前定义的SQL脚本变量<变量名>
 vl 打印所有已定义的SQL脚本变量
 vc 清除定义的所有SQL脚本变量
 ve ON|OFF 对SQL脚本变量进行转义的开或关
 vs ON|OFF 打开或关闭SQL脚本变量替换
 vp ON|OFF 在遇到未定义的变量时打开或关闭SQL脚本变量提示

SYS.TABLES

SYS.TABLE_COLUMNS

SYS.VIEW_COLUMNS

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。