如何知道 Redshift 查询返回的值的类型?

Posted

技术标签:

【中文标题】如何知道 Redshift 查询返回的值的类型?【英文标题】:How to know the type of a value returned by a Redshift query? 【发布时间】:2020-07-01 20:20:46 【问题描述】:

在 PostgreSQL 中,您可以使用 SELECT 语句中的函数pg_typeof() 来获取 SQL 查询返回值的数据类型。

尽管有 Redshift 的 SQL 血统,但该函数在 Redshift 中不存在。

我想这样做:

SELECT pg_typeof(0.25::numeric(5,2)) ;

然后得到:

numeric(5,2)

如何获取 SQL 查询返回的值的数据类型? 这是为了帮助我对我的 ETL 开发进行单元测试。

【问题讨论】:

我认为无法检查查询中的列类型。 【参考方案1】:

不确定是否可以在您的用例中使用,但我使用此查询来获取 Redshift 中的类型

SELECT distinct 
        t.relname as table,
        a.attname as column,
        pg_catalog.format_type(a.atttypid, a.atttypmod) as type
FROM pg_attribute a
    JOIN pg_class t on a.attrelid = t.oid
    JOIN pg_namespace s on t.relnamespace = s.oid
WHERE a.attnum > 0 
    AND NOT a.attisdropped
    AND LENGTH(a.attname) > 1
    AND s.nspname in (schemas)

【讨论】:

以上是关于如何知道 Redshift 查询返回的值的类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 r 的范围内返回 .csv 列中的值的数量

Redshift 返回一个 []uint8 而不是整数,在它们之间转换会返回不正确的值

如何在 Redshift 中仅输出随机 xx% 的查询输出记录?

如何从查询中捕获值并将其用作另一个查询中的值

如何(以编程方式)知道何时在 PostgreSQL/Amazon Redshift 上完成查询?

AWS Redshift Vacuum 返回错误:断言