SQL - SAP HANA - 控制台内容太长 - 将一些代码传递给过程?

SQL - SAP HANA - Console Content to long - Pass some code to a procedure?

我的 SAP HANA SQL 控制台中有一个 SQL 脚本,大约有 1700 行。 我有很多行,因为我需要更改从一个 "raw table" 导入的一列中的很多条目。 重复的 WHEN THEN 代码如下所示:`

Create Column Table xxx
Select Distinct 
   aaa AS "aaa",
   bbb AS "bbb",
   ccc AS "ccc",
   CASE 
      WHEN importedColumn like 'xx123x' THEN REPLACE_REGEXPR ('xx123x' FLAG 'i' IN importedColumn WITH 'xxx')
      WHEN importedColumn like 'yy345y' THEN REPLACE_REGEXPR ('yy345y' FLAG 'i' IN importedColumn WITH 'yyy') 
      WHEN importedColumn like 'zzz345z' THEN REPLACE_REGEXPR ('zzz345z'FLAG 'i' IN importedColumn WITH 'zzzz') 
      etc.
      etc. 
      ELSE xxx 
   END AS replace_regexpr 
FROM...
WHERE...

这(通常)工作正常。 问题是,我有太多不同的 WHEN THEN 语句(总是检查这一列的条目并可能更改它们)以至于我无法再执行代码 -> SQL console Content is too large。 我可以以某种方式提取此 case 语句并将其存储在过程或类似的东西中吗? 我真的不知道我该如何处理这个问题,所以我很高兴收到每一个建议!

从这个和链接的问题我认为你有一个 REGEX 规则应该应用于输入数据当且仅当找到特定模式(通过 LIKE 运算符比较)。

我会将所有匹配模式和替换规则放入一个单独的 table 中,使维护、调试和 SELECT 语句变得容易得多:

create column table xxx (id int primary key
                       , "impColumn" nvarchar(4000)
);

create column table rules (id int primary key
                         , matcher nvarchar(4000)
                         , regex nvarchar(4000));       

insert into rules values (1, 'xx123x', 'xxx');
insert into rules values (2, 'yy345y', 'yyy');
insert into rules values (3, 'zzz345z', 'zzz');


insert into xxx values (1, 'xx123x');
insert into xxx values (2, 'yy345y');
insert into xxx values (3, 'zzz345z');

insert into xxx values (4, 'xx123xyy345y');
insert into xxx values (5, 'xx1zzz345zzzz345z23x');
insert into xxx values (6, 'xx123xyy345yzzz345z');

select
    x.*,
    r.*,
    REPLACE_REGEXPR (r.matcher
                    FLAG 'i' 
                    IN x."impColumn"  
                    WITH r.regex) as output
from 
    xxx x
    left outer join
    rules r
    on x."impColumn" like   r.matcher  ;

您可以将加入条件更改为 在 x."impColumn" 上喜欢 '%'|| r.matcher ||'%'

将所有匹配规则应用于输入行,但请注意,这会为每个应用的规则生成一个输出行,这可能不是您想要的。

没有占位符的输出如下所示:

这与您的示例 SQL 产生的结果几乎相同。

至于 SAP HANA Studio 中的问题,我猜测 这是由于您尝试运行 的脚本文件的绝对大小所致。 通过为 HANA Studio 编辑 JRE VM 内存,您可以避免此问题。

请检查 hdbstudio.ini 并将 VM 参数设置为

  • -Xmx4096m
  • -Xms512m

并重新启动 HANA Studio。