【问题标题】:Creating a Column Store Table Type in Hana在 Hana 中创建列存储表类型
【发布时间】:2017-11-16 03:16:30
【问题描述】:

我正在尝试在 SAP Hana 中创建一个将 ARRAY 作为列类型的表类型。当我使用标准 DDL 创建表类型时,即

CREATE TYPE MYSCHEMA.TABNAME AS TABLE("ObjList" INTEGER ARRAY);

我收到以下错误:

Could not execute 'CREATE TYPE "schema"."ListType" AS TABLE ( "ID" BIGINT      CS_FIXED, ...'
SAP DBTech JDBC: [7]: feature not supported: cannot create row table having array type: ObjList

从文档中不清楚如何创建列存储类型的表类型。由于我将 ARRAY 值从 .NET 代码传递到 HANA 中的存储过程以进行批量更新/更新,因此我无法取消此要求。

TIA

【问题讨论】:

    标签: sap hana hana-sql-script


    【解决方案1】:

    无法创建列表类型 - 表类型始终是行结构,因为它们定义了记录的外观。类型不存储数据,因此此处的行/列/任何内容之间没有区别。

    对于您想要做的事情 - 将 ARRAY 从客户端应用程序交给 SAP HANA - 这种差异并不重要,因为根本不可能做到这一点。 您可以在过程/函数和表之间传递数组,但没有外部接口可以将数据输入其中。 只有使用 ARRAY() 函数,您才能在服务器端创建数组。 如果你在 stackoverflow 上搜索“hana array”,你会发现这已经被广泛讨论了......

    Insert array in HANA with JAVAUpload an array in HANAHow to insert an array in a loop to the database 举几个例子。

    【讨论】:

    • 谢谢拉斯!我正在考虑使用全局临时列表而不是表类型来处理上述问题。我的疑问是因为我使用的是 ado.net 的客户端 API 的方法 WriteToServer() ,所以我会将数据表传递给服务器。我可以将我的源类型定义为字符串并将其构造为 ARRAY() 并使用 WriteToServer() 发送它,因为我可以利用更有效的批量插入功能。
    • 我尝试在WriteToServer() 方法中传递上面提到的数据表,导致以下异常:SELECT array on temporary table with GROUPBY, WHERE, ORDERBY is not supported 我不知道出了什么问题..是因为数据表的来源列有字符串作为数据类型?
    猜你喜欢
    • 1970-01-01
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    相关资源
    最近更新 更多