Jboss 从Blob/Object到行提取双值

Jboss 从Blob/Object到行提取双值,jboss,teiid,Jboss,Teiid,我有一个与此主题相关的查询: 在到达逗号分隔值阶段之前,这些值实际上存储为blob。 有一个函数fetchBlobtoString(Blob,string,VARIADIC start\u end integer)返回实际接受Blob输入的字符串,然后转换为逗号分隔的值,如文章所示 这个字符串的问题是限制为4000个字符,因此它将大量删除数据,而不是所有的值都显示出来。提取双精度值并将其转换为与post类似的行的最佳方法是什么 使用以下函数作为示例,将其转换为对象而不是字符串是否会提高性能:

我有一个与此主题相关的查询:

在到达逗号分隔值阶段之前,这些值实际上存储为blob。 有一个函数fetchBlobtoString(Blob,string,VARIADIC start\u end integer)返回实际接受Blob输入的字符串,然后转换为逗号分隔的值,如文章所示

这个字符串的问题是限制为4000个字符,因此它将大量删除数据,而不是所有的值都显示出来。提取双精度值并将其转换为与post类似的行的最佳方法是什么

使用以下函数作为示例,将其转换为对象而不是字符串是否会提高性能:

fetchElementValueFromBlob(protobufBlob Blob,origName字符串)返回对象

我曾尝试使用getItem函数在blob中迭代项,添加到临时表,但速度很慢,如果迭代次数超过15-20次,我会出现以下错误:

错误:TEID30504 Remote org.teiid.core.teidProcessingException:TEID30504 petrelDS:TEID60000 javax.resource.ResourceException:IJ000453:无法获取java的托管连接:/petrelDS SQLState:50000 错误代码:30504

BEGIN
  DECLARE integer VARIABLES.counter = 0;
  DECLARE integer VARIABLES.pts = 100;
  WHILE (VARIABLES.counter < VARIABLES.pts)
   BEGIN
    select wellbore_uwi,getItem(fetchBlob(data, 'md'),VARIABLES.counter) INTO TEMP from DirectionalSurvey where wellbore_uwi='1234567890'; 
    VARIABLES.counter = (VARIABLES.counter + 1);
   END
SELECT TEMP.wb_uwi,TEMP.depth  FROM TEMP;
END
开始
声明整数变量。计数器=0;
声明整数变量。pts=100;
WHILE(VARIABLES.counter

如果我删除getItem()函数,错误就会消失。

看起来您耗尽了连接,因此getItem中15之后的错误会消失。所以,您每次都在while循环中读取一个值,并将每个值添加到temp表中?为什么不将blob转换为clob,然后在单勺中使用TextTable?我在尝试将blob转换为clob时遇到以下错误:Remote org.teiid.api.exception.query.queryResolveException:TEIID30071不允许将blob转换为clob。在这种情况下,合适的编码是什么。使用UTF-8编码,我得到以下错误:错误:TEIID30179文本解析错误:无法读取未知中的数据您可以像开始一样读取CLOB吗?由于BLOB被认为是二进制的,因此不会进行隐式转换,因此我必须检查
convert(myblob,CLOB)
是否与显式转换一样工作。编码取决于您的数据。如果是字符串“是”,则可以使用UTF-8。我说打印内容以确保首先与调试步骤一样,然后如果看起来正确,则将其馈送到TextTablesResolved:将Blob转换为Object to Object数组,然后使用exec ArrayItate函数:fetchElementValueFromBlob:函数为给定Blob
中的给定元素获取完整数组对象选择ds.wellbore\u uwi,深度。*来自定向测量作为ds,表(exec arrayiterate(转换(fetchElementValueFromBlob(ds.data,'md'),object[])作为深度