如何通过代码查询SQL表的分区总数量
表分区总数量代码查询方法
以下是不同数据库场景下的对应实现方案:
MySQL / MariaDB
- 执行查询前将
your_database_name、your_table_name替换为实际的库名、表名:
SELECT COUNT(*) AS partition_count FROM information_schema.PARTITIONS WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name' AND PARTITION_NAME IS NOT NULL;
PostgreSQL
- 针对原生分区表执行以下查询,替换占位符为实际表名:
SELECT COUNT(*) AS partition_count FROM pg_inherits JOIN pg_class parent ON pg_inherits.inhparent = parent.oid JOIN pg_class child ON pg_inherits.inhrelid = child.oid WHERE parent.relname = 'your_table_name' AND parent.relkind = 'p';
Oracle
- 普通用户查询自有表分区数执行以下语句,表名需大写,DBA可替换
USER_TAB_PARTITIONS为DBA_TAB_PARTITIONS查询全库范围的表:
SELECT COUNT(*) AS partition_count FROM USER_TAB_PARTITIONS WHERE TABLE_NAME = 'YOUR_TABLE_NAME';
Hive / Spark SQL
- SQL查询方式:
SELECT COUNT(*) AS partition_count FROM ( SHOW PARTITIONS your_table_name );
- PySpark代码获取方式:
from pyspark.sql import SparkSession spark = SparkSession.builder.appName("test").getOrCreate() partition_count = len(spark.table("your_db.your_table").rdd.getNumPartitions())
所有场景下的查询结果和「表属性 > 存储」路径下展示的分区数完全一致,本质都是读取数据库系统元数据表的统计结果。
内容的提问来源于stack exchange,提问作者impo
相关产品推荐
相关产品推荐

