描述表查看哪些列不为空

问题描述 投票:0回答:3

在 Apache Spark SQL (Azure Databricks) 中,我创建了一个如下表:

CREATE TABLE t(
    a BIGINT,
    b BIGINT NOT NULL
)

我已验证我有一个可为 null 的列和一个不可为 null 的列,因为如果我尝试在

NULL
列中插入
b
,则会收到错误,但我可以在
a
列中插入 null。

但是,以下声明

DESCRIBE TABLE t

不告诉我哪些列可以为空,哪些列不可以为空。

DESCRIBE TABLE EXTENDED
也没有。我怎样才能获得完整的描述?

apache-spark apache-spark-sql databricks azure-databricks
3个回答
2
投票

Spark SQL 辅助命令(例如

DESCRIBE TABLE
SHOW COLUMNS
)不会根据文档显示列 NULL 约束。

有这个命令:

SHOW TABLE EXTENDED like 't'

它返回

information
列中的模式以及其他信息,但可读性不强。

//Table Properties: [transient_lastDdlTime=1643396075]
//.....
//Partition Provider: Catalog
//Schema: root
// |-- a: long (nullable = true)
// |-- b: long (nullable = false)

但是如果你可以将

spark.catalog
与 scala/python api 一起使用,那么这很简单:

spark.catalog.listColumns("t").show()
//+----+-----------+--------+--------+-----------+--------+
//|name|description|dataType|nullable|isPartition|isBucket|
//+----+-----------+--------+--------+-----------+--------+
//|   a|       null|  bigint|    true|      false|   false|
//|   b|       null|  bigint|   false|      false|   false|
//+----+-----------+--------+--------+-----------+--------+

0
投票

用这个

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
WHERE 
TABLE_SCHEMA = "database_name"
AND
TABLE_NAME ="t"

您要查找的列名称称为“IS_NULLABLE”


0
投票

这对我有用 select * from system.information_schema.columns 其中 table_schema = 'finance' AND table_name = 'YourtableNM' 并且 is_nullable = 'NO'

© www.soinside.com 2019 - 2024. All rights reserved.