pgsql 怎么查询出所有非分区表
时间: 2024-05-12 12:20:54 浏览: 58
可以使用以下查询语句来获取所有非分区表:
```
SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public' AND table_type = 'BASE TABLE' AND table_name NOT IN (
SELECT table_name FROM information_schema.partitions WHERE table_schema = 'public'
);
```
说明:
- 使用 `information_schema.tables` 系统表来获取所有表的信息;
- `table_schema = 'public'` 表示只查询 `public` schema 下的表;
- `table_type = 'BASE TABLE'` 表示只查询非分区表;
- `table_name NOT IN (...)` 表示排除所有分区表的名称。
相关问题
pgsql普通表转分区表
将 PostgreSQL 中的普通表转换为分区表,需要以下步骤:
1. 创建分区表:首先需要创建一个与原来普通表结构相同的分区表,可以使用以下命令:
```sql
CREATE TABLE my_partitioned_table (
like my_table INCLUDING ALL
) PARTITION BY RANGE (column_to_partition);
```
此命令将创建一个名为 my_partitioned_table 的分区表,其结构与 my_table 相同,并且将根据 column_to_partition 列的值进行分区。
2. 创建分区:使用以下命令为分区表创建分区:
```sql
CREATE TABLE my_partition_1 PARTITION OF my_partitioned_table FOR VALUES FROM (min_value) TO (max_value);
```
此命令将创建一个名为 my_partition_1 的分区,其包含所有 column_to_partition 列值在 min_value 和 max_value 之间的行。可以根据需要创建多个分区。
3. 将数据从原表中导入分区表:使用以下命令将数据从 my_table 中导入到 my_partitioned_table 中:
```sql
INSERT INTO my_partitioned_table SELECT * FROM my_table;
```
此命令将从 my_table 中选择所有行,并将它们插入到 my_partitioned_table 中。由于 my_partitioned_table 是一个分区表,将在正确的分区中自动插入这些行。
4. 删除原表:最后,使用以下命令删除原来的普通表:
```sql
DROP TABLE my_table;
```
这样就完成了将 PostgreSQL 中的普通表转换为分区表的过程。注意:在转换过程中,需要对数据进行备份以确保不会丢失数据。
pgsql 删除分区表
通过在pgSQL版本10中引入声明式分区表,可以实现删除分区表。可以使用以下函数来删除分区表:
```sql
CREATE OR REPLACE FUNCTION deletePartitionIfExists (tb_name_partiton_val VARCHAR) RETURNS VOID AS $body$
DECLARE
master_name TEXT := tb_name_partiton_val; -- 删除分区表表名
BEGIN
-- 判断分区名称是否存在,不存在时才需要创建
IF to_regclass (tb_name_partiton_val) IS NOT NULL THEN
-- 执行删除分区
EXECUTE format ('DROP TABLE %s', tb_name_partiton_val);
END IF;
END;
$body$ LANGUAGE plpgsql;
```
这个函数接受分区表的名字作为参数,并通过执行`DROP TABLE`语句来删除分区表。如果分区表不存在,则不会执行删除操作。这样就可以实现删除pgSQL的分区表。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [pgsql在分区表与非分区表中自由切换](https://blog.csdn.net/zjcxc/article/details/120239954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [postgre sql 将非分区表转化为分区表,动态创建和删除分区](https://blog.csdn.net/qq_41982570/article/details/126878258)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [PostgreSQL表分区和子表及删除所有的数据库表.zip](https://download.csdn.net/download/as4589sd/12169679)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]