Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del 1 de noviembre de 2025. Si desea utilizar las UDF de Python, créelas antes de esa fecha. Las UDF de Python existentes seguirán funcionando con normalidad. Para obtener más información, consulte la publicación del blog
SVL_STATEMENTTEXT
Utilice la vista SVL_STATEMENTTEXT para obtener un registro completo de todos los comandos SQL que se ejecutaron en el sistema.
La vista SVL_STATEMENTTEXT tiene la unión de todas las filas en las tablas STL_DDLTEXT, STL_QUERYTEXT y STL_UTILITYTEXT. Esta vista también incluye una combinación con la tabla STL_QUERY.
SVL_STATEMENTTEXT 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_HISTORY. 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 | entero | ID del usuario que generó la entrada. |
xid | bigint | ID de la transacción asociado a la instrucción. |
pid | entero | ID del proceso para la instrucción. |
etiqueta | character(320) | Ya sea el nombre del archivo utilizado para ejecutar la consulta o una etiqueta definida con un comando SET QUERY_GROUP. Si la consulta no se basa en archivos o si no se establece el parámetro QUERY_GROUP, el valor del campo queda en blanco. |
starttime | marca de tiempo | Hora exacta en que la instrucción comenzó a ejecutarse, con 6 dígitos de precisión para las fracciones de segundos. Por ejemplo: 2009-06-12 11:29:19.131358 |
endtime | marca de tiempo | Hora exacta en que la instrucción finalizó la ejecución, con 6 dígitos de precisión para las fracciones de segundos. Por ejemplo: 2009-06-12 11:29:19.193640 |
sequence | entero | 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. |
type | varchar (10) | Tipo de instrucción SQL: QUERY , DDL o UTILITY . |
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 ). |
Consulta de ejemplo
En la siguiente consulta, se devuelven instrucciones DDL que se ejecutaron el 16 de junio de 2009:
select starttime, type, rtrim(text) from svl_statementtext where starttime like '2009-06-16%' and type='DDL' order by starttime asc; starttime | type | rtrim ---------------------------|------|-------------------------------- 2009-06-16 10:36:50.625097 | DDL | create table ddltest(c1 int); 2009-06-16 15:02:16.006341 | DDL | drop view alltickitjoin; 2009-06-16 15:02:23.65285 | DDL | drop table sales; 2009-06-16 15:02:24.548928 | DDL | drop table listing; 2009-06-16 15:02:25.536655 | DDL | drop table event; ...
Reconstruyendo el SQL almacenado
Para reconstruir el SQL almacenado en la columna text
de SVL_STATEMENTTEXT, ejecute una instrucción SELECT para crear SQL desde 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 LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS query_statement from SVL_STATEMENTTEXT where pid=pg_backend_pid();
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 VL_STATEMENTTEXT.
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 VL_STATEMENTTEXT.
select sequence, text from SVL_STATEMENTTEXT where pid = pg_backend_pid() order by starttime, sequence;
sequence | text ----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 1 | \nFROM stl_querytext;
Para reconstruir el SQL almacenado en VL_STATEMENTTEXT, 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 SVL_STATEMENTTEXT where pid=pg_backend_pid();
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;