SVL_STATEMENTTEXT - Amazon Redshift

SVL_STATEMENTTEXT

Use a exibição SVL_STATEMENTTEXT para obter um registro completo de todos os comandos SQL que foram executados no sistema.

A exibição SVL_STATEMENTTEXT contém a união de todas as linhas nas tabelas STL_DDLTEXT, STL_QUERYTEXT e STL_UTILITYTEXT. Essa exibição também inclui uma junção com a tabela STL_QUERY.

SVL_STATEMENTTEXT é visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para ter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.

Alguns ou todos os dados nessa tabela também podem ser encontrados na exibição de monitoramento SYS SYS_QUERY_HISTORY. Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender. É recomendável usar a exibição de monitoramento SYS nas consultas.

Colunas da tabela

Nome da coluna Tipo de dados Descrição
userid inteiro O ID do usuário que gerou a entrada.
xid bigint O ID da transação associada à instrução.
pid inteiro O ID de processo para a instrução.
label character(320) O nome do arquivo usado para executar a consulta ou um rótulo definido com o comando SET QUERY_GROUP. Se a consulta não for baseada em arquivos ou o parâmetro QUERY_GROUP não estiver definido, o valor deste campo será branco.
starttime timestamp O horário exato do início da execução da instrução, com 6 dígitos de precisão para as frações de segundo. Por exemplo: 2009-06-12 11:29:19.131358
endtime timestamp O horário exato do término da execução da instrução, com 6 dígitos de precisão para as frações de segundo. Por exemplo: 2009-06-12 11:29:19.193640
sequence inteiro Quando uma única instrução contém mais de 200 caracteres, são registradas linhas adicionais para essa instrução. O valor 0 da sequência é a primeira linha, 1 é a segunda, e assim por diante.
tipo varchar(10) O tipo da instrução SQL: QUERY, DDL ou UTILITY.
text character(200) O texto em SQL, em incrementos de 200 caracteres. Esse campo pode conter caracteres especiais como barra invertida (\\) e nova linha (\n).

Consulta de exemplo

A consulta a seguir retorna as instruções em DDL que foram executadas em 16 de junho 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; ...

Reconstrução de SQL armazenado

Para reconstruir o SQL armazenado na coluna text de SVL_STATEMENTTEXT, execute uma instrução SELECT para criar SQL a partir de uma ou mais partes na coluna text. Antes de executar o SQL reconstruído, substitua os caracteres especiais por uma nova linha (\n). O resultado da instrução SELECT a seguir são linhas de SQL reconstruído no 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 exemplo, a consulta a seguir seleciona três colunas. A consulta em si tem mais de 200 caracteres e é armazenada em partes emSVL_STATEMENTTEXT.

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

Nesse exemplo, a consulta é armazenada em duas partes (linhas) na coluna text de SVL_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 o SQL armazenado em STL_STATEMENTTEXT, execute o seguinte 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 o SQL reconstruído resultante em seu cliente, substitua os caracteres especiais por uma nova linha (\n).

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;