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 quithdbsql=> \\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)\\r[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] 打印当前的查询缓冲区(仅在多行模式下)\\r[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