如何知道 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 查询返回的值的类型?的主要内容,如果未能解决你的问题,请参考以下文章