schemaname || . || tablename
时间: 2023-08-16 10:14:26 浏览: 86
可以通过以下SQL语句来获取schemaname和tablename的组合:
```sql
SELECT schemaname || '.' || tablename AS full_name
FROM your_table;
```
其中,`your_table`是你要查询的表。这将会返回一个包含schemaname和tablename组合的结果集。
相关问题
select tablename from pg_tables where schemaname='public' and tablename not in (SELECT child.relname AS child_table FROM pg_inherits JOIN pg_class parent ON pg_inherits.inhparent = parent.oid JOIN pg_class child ON pg_inherits.inhrelid = child.oid JOIN pg_namespace nmsp_parent ON nmsp_parent.oid = parent.relnamespace JOIN pg_namespace nmsp_child ON nmsp_child.oid = child.relnamespace) order by 1;
这是一条 PostgreSQL 数据库查询语句,用于查找指定 schema(在此为 public)下的所有表名,并排除继承关系的表。其具体作用如下:
1. 通过 `pg_tables` 系统目录表,筛选指定 schema(在此为 public)下的所有表名,使用 `schemaname` 和 `tablename` 进行筛选。
2. 使用子查询查找继承关系的表,即父表和子表,使用 `pg_inherits` 系统目录表来查找这个关系。通过 `inhparent` 和 `inhrelid` 可以找到父表和子表的 `oid`。然后使用 `pg_class` 系统目录表找到表的详细信息,包括表名和 schema。最后,使用 `pg_namespace` 系统目录表来查找 schema 的详细信息,并与表的详细信息一起使用以获取完整的表名。
3. 将不在子查询结果中的所有表名按照字母顺序排序,并返回结果。
该查询语句的作用是查找指定 schema 下的所有非继承关系的表名。在数据迁移过程中,可以使用此查询来列出需要进行数据清理和转换的表,以便执行后续的数据迁移操作。
Postgrepsql get_table_ddl(v_schemaname, v_tablename)语句
在PostgreSQL中,`get_table_ddl(v_schemaname, v_tablename)`是一个假设存在的函数,它主要用于获取指定模式(schemaname)和表名(tablename)的创建表DDL(Data Definition Language)语句。这个函数可能会通过查询系统的元数据(metadata)或者系统目录表来获取表的相关信息,如字段定义、索引、约束等,并将其组合成一个DDL字符串,返回给用户或用于备份恢复。
然而,PostgreSQL本身并没有直接提供这样的内置函数,你需要自定义或者使用第三方工具(如pg_dump、pg_statements等)来实现类似的功能。如果存在这样的函数,它的大概实现会像这样:
```sql
CREATE OR REPLACE FUNCTION get_table_ddl(text, text)
RETURNS text AS $$
BEGIN
RETURN format('CREATE TABLE %I.%I (%s);', v_schemaname, v_tablename, pg_get_tabledef(v_tablename, v_schemaname));
END;
$$ LANGUAGE plpgsql;
```
阅读全文