STL_QUERYTEXT
Captura o texto da consulta para os comandos SQL.
Consulte a visualização STL_QUERYTEXT para capturar o SQL que foi registrado para as seguintes instruções:
-
SELECT, SELECT INTO
-
INSERT, UPDATE, DELETE
-
COPY
-
UNLOAD
-
As consultas geradas executando VACUUM e ANALYZE
-
CREATE TABLE AS (CTAS)
Para consultar a atividade dessas instruções em um determinado período de tempo, junte as visualizações STL_QUERYTEXT e STL_QUERY.
nota
As visualizações STL_QUERY e STL_QUERYTEXT contêm apenas informações sobre consultas, não outro utilitário e comandos DDL. Para obter uma lista e informações sobre todas as instruções executadas pelo Amazon Redshift, também é possível consultar as visualizações STL_DDLTEXT e STL_UTILITYTEXT. Para obter uma lista completa de todas as instruções executadas pelo Amazon Redshift, é possível consultar a visualização SVL_STATEMENTTEXT.
Consulte também STL_DDLTEXT, STL_UTILITYTEXT e SVL_STATEMENTTEXT.
STL_QUERYTEXT permanece 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_TEXT. 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 | ID da transação. |
pid | inteiro | ID do processo. Normalmente, todas as consultas de uma sessão são executadas no mesmo processo, portanto esse valor geralmente permanece constante se você executa uma série de consultas na mesma sessão. Após certos eventos internos, o Amazon Redshift pode reiniciar uma sessão ativa e atribuir um novo PID. Para ter mais informações, consulte STL_RESTARTED_SESSIONS. Você pode usar esta coluna para ingressar na visualização STL_ERROR. |
consulta | inteiro | ID da consulta. A coluna de consulta pode ser usada para unir outras tabelas e exibições do sistema. |
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. |
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 ). |
Consultas de exemplo
Você pode usar a função PG_BACKEND_PID() para recuperar informações da sessão atual. Por exemplo, a consulta a seguir retorna o ID de consulta e uma parte do texto da consulta para as consultas concluídas na sessão atual.
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)
Reconstrução de SQL armazenado
Para reconstruir o SQL armazenado na coluna text
de STL_QUERYTEXT, 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 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 exemplo, a consulta a seguir seleciona três colunas. A consulta em si tem mais de 200 caracteres e é armazenada em partes em STL_QUERYTEXT.
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 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 o SQL armazenado em STL_QUERYTEXT, 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 stl_querytext where query=pg_last_query_id();
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;