PG_TABLE_DEF - Amazon Redshift

PG_TABLE_DEF

Almacena información acerca de las columnas de la tabla.

PG_TABLE_DEF solo devuelve información acerca de las tablas que son visibles para el usuario. Si PG_TABLE_DEF no devuelve los resultados esperados, verifique que el parámetro search_path se estableció correctamente para incluir los esquemas relevantes.

Puede utilizar SVV_TABLE_INFO para consultar información más exhaustiva acerca de una tabla, incluidos el sesgo de distribución de datos, el sesgo de distribución de claves, el tamaño de tabla y las estadísticas.

Columnas de la tabla

Nombre de la columna Tipo de datos Descripción
schemaname nombre Nombre del esquema.
tablename nombre Nombre de la tabla.
column nombre Nombre de la columna.
type texto Tipo de datos de la columna.
encoding character (32) Codificación de la columna.
distkey boolean True si esta columna es la clave de distribución para la tabla.
sortkey integer Orden de la columna en la clave de ordenación. Si la tabla utiliza una clave de ordenación compuesta, todas las columnas que forman parte de la clave de ordenación tienen un valor positivo que indica la posición de la columna en la clave de ordenación. Si la tabla utiliza una clave de ordenación intercalada, cada una de las columnas que formen parte de la clave de ordenación tienen un valor que puede ser positivo o negativo, donde el valor absoluto indica la posición de la columna en la clave de ordenación. Si es 0, la columna no forma parte de la clave de ordenación.
notnull boolean True si la columna tiene una restricción NOT NULL.

Ejemplo

En el siguiente ejemplo se muestran las columnas con clave de ordenación compuesta para la tabla LINEORDER_COMPOUND.

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_compound' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | 1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | 3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | 5 | true (5 rows)

En el siguiente ejemplo se muestran las columnas con clave de ordenación intercalada para la tabla LINEORDER_INTERLEAVED.

select "column", type, encoding, distkey, sortkey, "notnull" from pg_table_def where tablename = 'lineorder_interleaved' and sortkey <> 0; column | type | encoding | distkey | sortkey | notnull -------------+---------+----------+---------+---------+-------- lo_orderkey | integer | delta32k | false | -1 | true lo_custkey | integer | none | false | 2 | true lo_partkey | integer | none | true | -3 | true lo_suppkey | integer | delta32k | false | 4 | true lo_orderdate | integer | delta | false | -5 | true (5 rows)

PG_TABLE_DEF solo devolverá información de las tablas en los esquemas que están incluidos en la ruta de búsqueda. Para obtener más información, consulte search_path.

Por ejemplo, suponga que crea un esquema y una tabla nuevos, luego consulta PG_TABLE_DEF.

create schema demo; create table demo.demotable (one int); select * from pg_table_def where tablename = 'demotable'; schemaname|tablename|column| type | encoding | distkey | sortkey | notnull ----------+---------+------+------+----------+---------+---------+--------

La consulta no devuelve filas para la nueva tabla. Analice la configuración de la search_path.

show search_path; search_path --------------- $user, public (1 row)

Agregue el esquema demo a la ruta de búsqueda y ejecute la consulta de nuevo.

set search_path to '$user', 'public', 'demo'; select * from pg_table_def where tablename = 'demotable'; schemaname| tablename |column| type | encoding |distkey|sortkey| notnull ----------+-----------+------+---------+----------+-------+-------+-------- demo | demotable | one | integer | none | f | 0 | f (1 row)