Snowflake查询表字段如何返回建表时定义的原始数据类型
问题原因
Snowflake 会将常用数据类型别名自动映射为底层标准存储类型:INT 是 NUMBER(38,0) 的别名,VARCHAR 和 TEXT 互为同义词,INFORMATION_SCHEMA.COLUMNS 视图默认的 DATA_TYPE 字段返回的是底层标准化后的通用类型名,所以和你建表时写的别名不一致。
修改方案
方案1:结构化查询具体类型定义
如果你需要获取字段的具体类型参数(比如VARCHAR的长度、NUMBER的精度),可以查询COLUMN_TYPE字段替代DATA_TYPE,查询语句修改为:
select COLUMN_NAME, COLUMN_TYPE from dbName.information_schema.columns where table_schema = 'schemaName' and table_name = 'dbdt'
返回的COLUMN_TYPE字段会展示NUMBER(38,0)、VARCHAR(255)这类完整的类型定义。
方案2:获取原始建表语句
如果你需要完全还原建表时写的别名(比如INT而非NUMBER(38,0)),INFORMATION_SCHEMA没有存储原始别名信息,可通过GET_DDL函数直接获取原始建表语句查看:
select GET_DDL('TABLE', 'schemaName.dbdt');
内容的提问来源于stack exchange,提问作者archgnu
相关产品推荐
相关产品推荐

