首页 > 解决方案 > 列出雪花中特定表中具有数据类型的所有列

问题描述

我在这个非常相似的问题中尝试了答案:List all columns with datatype in specific table in Snowflake and they work in the Snowflake WebUI but not in Teradata SQL Assistant。

但即使使用 SHOW COLUMNS IN TABLE MYSCHEMA.MYTABLE; 没有给我我真正需要的东西。我希望查询返回如下信息:

Columns     Data Type
REGION_ID   NUMBER(38,0)
STORE_NAME  VARCHAR(20)
VALID_NAME  VARCHAR(1)

来自 SHOW COLUMNS IN TABLE MYSCHEMA.MYTABLE 的 data_type 列;看起来不像上面来自 Snowflake WebUI 的网格(通过右键单击“查找数据库对象”部分左侧的表名称来“查看详细信息”命令)。

SHOW COLUMNS... 的视图如下所示:

data_type
{"type":"FIXED","precision":38,"scale":0,"nullable":true}
{"type":"TEXT","length":20,"byteLength":80,"nullable":true,"fixed":false}
{"type":"TEXT","length":1,"byteLength":4,"nullable":true,"fixed":false}

是的,类似,但我正在寻找与上面的网格或 Teradata SHOW TABLE 命令等效的东西。

标签: snowflake-cloud-data-platform

解决方案


请参阅 Snowflake 的GET_DDL()函数。

如果我们像这样创建一个模式和表:

CREATE SCHEMA MYSCHEMA
;
CREATE TABLE MYSCHEMA.MYTABLE (
  REGION_ID   NUMBER(38,0)
 ,STORE_NAME  VARCHAR(20)
 ,VALID_NAME  VARCHAR(1)
)
;

然后像这样执行 GET_DDL() :

SELECT GET_DDL('TABLE', 'MYSCHEMA.MYTABLE')
;

我们会得到这样的输出:

create or replace TABLE MYTABLE (
    REGION_ID NUMBER(38,0),
    STORE_NAME VARCHAR(20),
    VALID_NAME VARCHAR(1)
);

推荐阅读