雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?

Posted

技术标签:

【中文标题】雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?【英文标题】:Snowflake: Is there a query that will return data type as I set it when creating Table? int to int, not int to number?雪花:是否有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字? 【发布时间】:2021-12-03 07:10:51 【问题描述】:

例如

create table dbdt (
  ID int,
  Name varchar(255));

当我查询时:

  select * from dbName.information_schema.columns
  where table_schema = 'schemaName' and table_name = 'dbdt'

结果:

COLUMN_NAME DATA_TYPE
ID NUMBER
NAME TEXT

我需要在查询中进行哪些更改才能返回创建表时设置的INTVARCHAR(255)

【问题讨论】:

但是没有INT,只有NUMBER,而VARCHAR(255) 也同样意味着更少。如果您有一些工具需要认为有意义,请使用 REGEX 之类的工具为您进行字符串交换。 我可以知道您提出请求的原因是什么吗?有什么用例吗?这可能有助于找到替代方案。 【参考方案1】:

据我所知,您无法获得这些值,因为它们会为未来的操作进行标准化,包括 get_ddl

一种选择是转到查询历史记录以查找并解析 create 语句:

https://docs.snowflake.com/en/sql-reference/account-usage/query_history.html(1 年) https://docs.snowflake.com/en/sql-reference/functions/query_history.html(7 天)

我试图重现这个问题,结果为空,因为表的基础名称是全大写:

select * from information_schema.columns where table_name = 'DBDT'

数据类型也已标准化:

select column_name, ordinal_position, data_type, character_maximum_length, numeric_precision
from information_schema.columns 
where table_name = 'DBDT

get_schema 允许使用大写字母,但它仍然规范化类型:

select get_ddl('table', 'dbdt')

【讨论】:

以上是关于雪花:是不是有一个查询会返回我在创建表时设置的数据类型? int 到 int,而不是 int 到数字?的主要内容,如果未能解决你的问题,请参考以下文章

sql如何在创建表时设置外键

查询雪花中的半结构化字段

雪花程序没有被 catch 块捕获

查询具有大量列的 Hive 表时,是不是可以减少 MetaStore 检查的数量?

雪花:无法评估不受支持的子查询类型

变体列中唯一元素的雪花查询性能