STL_QUERYTEXT
Captura el texto de la consulta para los comandos SQL.
Consulte la vista STL_QUERYTEXT para capturar el SQL que se registró para las siguientes instrucciones:
-
SELECT, SELECT INTO
-
INSERT, UPDATE, DELETE
-
COPY
-
UNLOAD
-
Consultas generadas al ejecutar VACUUM y ANALYZE
-
CREATE TABLE AS (CTAS)
Para consultar la actividad de estas instrucciones durante un periodo determinado, combine las vistas STL_QUERYTEXT y STL_QUERY.
nota
Las vistas STL_QUERY y STL_QUERYTEXT solo presentan información relacionada con consultas, no sobre otras utilidades y comandos de DDL. Para obtener una lista con información sobre todas las instrucciones ejecutadas por Amazon Redshift, también puede consultar las vistas STL_DDLTEXT y STL_UTILITYTEXT. Para obtener una lista completa de todas las instrucciones ejecutadas por Amazon Redshift, puede consultar la vista SVL_STATEMENTTEXT.
Consulte también STL_DDLTEXT, STL_UTILITYTEXT y SVL_STATEMENTTEXT.
STL_QUERYTEXT es visible para todos los usuarios. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.
Algunos o todos los datos de esta tabla también están en la vista de monitoreo SYS SYS_QUERY_TEXT. Los datos de la vista de monitoreo SYS están formateados para que sean más fáciles de usar y entender. Se recomienda utilizar la vista de monitoreo SYS para las consultas.
Columnas de la tabla
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
userid | integer | ID del usuario que generó la entrada. |
xid | bigint | ID de transacción. |
pid | integer | ID de proceso. Por lo general, todas las consultas en una sesión se ejecutan en el mismo proceso, por lo que este valor suele permanecer constante si ejecuta una serie de consultas en la misma sesión. Después de determinados eventos internos, Amazon Redshift podría reiniciar una sesión activa y asignar un PID nuevo. Para obtener más información, consulte STL_RESTARTED_SESSIONS. Puede utilizar esta columna para combinar la vista STL_ERROR. |
consulta | integer | ID de la consulta. La columna de consulta puede usarse para combinar otras vistas y tablas del sistema. |
sequence | integer | Cuando una única instrucción tiene más de 200 caracteres, se registran filas adicionales para esa instrucción. Secuencia 0 es la primera fila, 1 es la segunda y, así, sucesivamente. |
texto | character(200) | Texto SQL, en incrementos de 200 caracteres. El campo puede contener caracteres especiales como una barra inversa(\\ ) y una nueva línea (\n ). |
Consultas de ejemplo
Puede utilizar la función PG_BACKEND_PID() para recuperar información de la sesión actual. Por ejemplo, la siguiente consulta devuelve el ID de consulta y una parte de su texto para aquellas consultas que se hayan completado en la sesión actual.
select query, substring(text,1,60)
from stl_querytext
where pid = pg_backend_pid()
order by query desc;
query | substring
-------+--------------------------------------------------------------
28262 | select query, substring(text,1,80) from stl_querytext where
28252 | select query, substring(path,0,80) as path from stl_unload_l
28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma
28247 | Count rows in target table
28245 | unload ('select * from category') to 's3://dw-tickit/manifes
28240 | select query, substring(text,1,40) from stl_querytext where
(6 rows)
Reconstruyendo el SQL almacenado
Para reconstruir el SQL almacenado en la columna text
de STL_QUERYTEXT, ejecute una instrucción SELECT para crear SQL de 1 o más partes en la columna text
. Antes de ejecutar el SQL reconstruido, reemplace cualquier caracter especial (\n
) con una nueva línea. El resultado de la siguiente instrucción SELECT es filas de SQL reconstruido en el campo query_statement
.
SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count
FROM stl_querytext GROUP BY query ORDER BY query desc;
Por ejemplo, la siguiente búsqueda selecciona 3 columnas. La búsqueda en si misma es más larga de 200 caracteres y se guarda en varias partes en STL_QUERYTEXT.
select
1 AS a0123456789012345678901234567890123456789012345678901234567890,
2 AS b0123456789012345678901234567890123456789012345678901234567890,
3 AS b012345678901234567890123456789012345678901234
FROM stl_querytext;
En este ejemplo, la búsqueda se guarda en 2 partes (filas) en la columna text
de STL_QUERYTEXT.
select query, sequence, text
from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text
-------+----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234
45 | 1 | \nFROM stl_querytext;
Para reconstruir el SQL almacenado en STL_QUERYTEXT, ejecute el siguiente SQL.
select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text
from stl_querytext where query=pg_last_query_id();
Para usar el SQL reconstruido resultante en su cliente, reemplace cualquier (\n
) caracter especial con una nueva línea.
text
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;