如何使用 SQL 在 Snowflake 中获取实际的特定列数据类型?

How to get actual, specific column data types in Snowflake using SQL?

我需要使用 SQL 获取多个 Snowflake table 和视图的列数据类型。 SQL 可以是 Snowflake 特定的。

我知道这个任务可以通过查询标准 INFORMATION_SCHEMA 对象来完成。但是,从此类查询返回的列数据类型是通用类型,如 TEXT、NUMBER 等。我正在尝试获取实际的 Snowflake 列数据类型,例如VARCHAR、DATETIME、SMALLINT 等

例如,在 SQL 服务器中,这可以通过查询 sys 视图来完成。 Snowflake 中是否有一组可以查询的等效对象?我还没找到。

额外的约束是它应该是一个查询,returns 列类型用于多个 tables,而不是每个 table 或视图一个查询。

如果 COLUMNS-view (https://docs.snowflake.com/en/sql-reference/info-schema/columns.html) 没有为您提供足够的信息,您可以尝试使用 SHOW COLUMNS 列出您有权访问的所有表中的所有列: https://docs.snowflake.com/en/sql-reference/sql/show-columns.html

根据文档,您至少可以看到数据类型的精度和比例:

{"type":"FIXED","precision":38,"scale":0,"nullable":true}