为什么当我在 vertica 中的视图上执行 select 查询时,我得到 "Length for type varchar cannot exceed 65000"?
why when I execute a select query on a view in vertica, do I get "Length for type varchar cannot exceed 65000"?
我在 vertica 中有一个 flextable,我正在尝试基于它创建一个视图。
创建视图语句如下:
CREATE VIEW testview AS
SELECT
COALESCE (
"USER_ID",
"userId",
"SM.actor.id",
"SM.participant.userId",
"SM.userId",
"SM.uid",
"SM_C.userId",
"SM.id" )::varchar AS userid
FROM
flex_table_test
WHERE "SM.verb" is not null
我可以成功创建视图,但是当我执行类似这样的操作时:
SELECT * FROM testview LIMIT 10;
我得到:
ERROR 3852: Length for type varchar cannot exceed 65000
如果我单独执行视图的 select 部分,它工作正常。我尝试转换输出字段,但似乎没有太大区别。
默认情况下,Flex 表中的数据存储为 LONG VARBINARY
,其默认原始大小为 130000。由于此数据长于 VARCHAR
(65000) 的最大长度,因此您需要截断 COALESCE
的结果或尝试将其转换为 ::long varchar
。如果后者有效,请注意 Vertica 不支持对此内容类型的操作。
我在 vertica 中有一个 flextable,我正在尝试基于它创建一个视图。
创建视图语句如下:
CREATE VIEW testview AS
SELECT
COALESCE (
"USER_ID",
"userId",
"SM.actor.id",
"SM.participant.userId",
"SM.userId",
"SM.uid",
"SM_C.userId",
"SM.id" )::varchar AS userid
FROM
flex_table_test
WHERE "SM.verb" is not null
我可以成功创建视图,但是当我执行类似这样的操作时:
SELECT * FROM testview LIMIT 10;
我得到:
ERROR 3852: Length for type varchar cannot exceed 65000
如果我单独执行视图的 select 部分,它工作正常。我尝试转换输出字段,但似乎没有太大区别。
默认情况下,Flex 表中的数据存储为 LONG VARBINARY
,其默认原始大小为 130000。由于此数据长于 VARCHAR
(65000) 的最大长度,因此您需要截断 COALESCE
的结果或尝试将其转换为 ::long varchar
。如果后者有效,请注意 Vertica 不支持对此内容类型的操作。