

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# STL\$1QUERYTEXT
<a name="r_STL_QUERYTEXT"></a>

捕获 SQL 命令的查询文本。

查询 STL\$1QUERYTEXT 视图以捕获为以下语句记录的 SQL：
+ SELECT、SELECT INTO
+ INSERT、UPDATE、DELETE
+ COPY
+ UNLOAD
+ 运行 VACUUM 和 ANALYZE 生成的查询
+ CREATE TABLE AS (CTAS)

要查询某个给定时间段中针对这些语句的活动，请联接 STL\$1QUERYTEXT 和 STL\$1QUERY 视图。

**注意**  
STL\$1QUERY 和 STL\$1QUERYTEXT 视图仅包含有关查询的信息，不包含有关其他实用工具和 DDL 命令的信息。对于有关 Amazon Redshift 运行的所有语句的列表和信息，您还可以查询 STL\$1DDLTEXT 和 STL\$1UTILITYTEXT 视图。有关 Amazon Redshift 运行的所有语句的完整列表，您可以查询 SVL\$1STATEMENTTEXT 视图。

另请参阅 [STL\$1DDLTEXT](r_STL_DDLTEXT.md)、[STL\$1UTILITYTEXT](r_STL_UTILITYTEXT.md) 和 [SVL\$1STATEMENTTEXT](r_SVL_STATEMENTTEXT.md)。

STL\$1QUERYTEXT 对所有用户可见。超级用户可以查看所有行；普通用户只能查看其自己的数据。有关更多信息，请参阅 [系统表和视图中的数据可见性](cm_chap_system-tables.md#c_visibility-of-data)。

此表中的部分或全部数据也可以在 SYS 监控视图 [SYS\$1QUERY\$1TEXT](SYS_QUERY_TEXT.md) 中找到。SYS 监控视图中的数据经过格式化处理，便于使用和理解。我们建议您使用 SYS 监控视图进行查询。

请注意，当查询文本长度超过 4000 个字符时，STL\$1QUERYTEXT 仅显示截断的数据。要获取完整的查询文本，可以对各行的查询文本使用 UNION。

## 表列
<a name="r_STL_QUERYTEXT-table-columns"></a>

[\[See the AWS documentation website for more details\]](http://docs.amazonaws.cn/redshift/latest/dg/r_STL_QUERYTEXT.html)

## 示例查询
<a name="r_STL_QUERYTEXT-sample-queries"></a>

您可以使用 PG\$1BACKEND\$1PID() 函数检索当前会话的信息。例如，以下查询返回当前会话中完成的查询的查询 ID 和一部分查询文本。

```
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)
```

### 重新构造存储的 SQL
<a name="r_STL_QUERYTEXT-reconstruct-sql"></a>

要重新构造存储在 STL\$1QUERYTEXT 的`text` 列中的 SQL，请运行 SELECT 语句，以从 `text` 列中的一个或多个部分创建 SQL。在运行重新构造的 SQL 之前，将任何 (`\n`) 特殊字符替换为新行。以下 SELECT 语句的结果是 `query_statement` 字段中重新构造的 SQL 的行。

```
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;
```

例如，以下查询选择 3 列。查询本身超过 200 个字符，并存储在 STL\$1QUERYTEXT 中的几个部分内。

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

在此示例中，查询存储在 STL\$1QUERYTEXT 的 `text` 列的 2 个部分（行）中。

```
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;
```

要重新构造存储在 STL\$1QUERYTEXT 中的 SQL，请运行以下 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();
```

要在客户端中使用生成的重新构造的 SQL，需将任何 (`\n`) 特殊字符替换为新行。

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