

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# SVL\_STATEMENTTEXT
<a name="r_SVL_STATEMENTTEXT"></a>

시스템에서 실행된 모든 SQL 명령의 완전한 레코드를 가져오려면 SVL\_STATEMENTTEXT 뷰를 사용합니다.

SVL\_STATEMENTTEXT 뷰에는 [STL\_DDLTEXT](r_STL_DDLTEXT.md), [STL\_QUERYTEXT](r_STL_QUERYTEXT.md)와 [STL\_UTILITYTEXT](r_STL_UTILITYTEXT.md) 테이블의 모든 행의 조합이 포함됩니다. 이 뷰에는 STL\_QUERY 테이블에 대한 조인도 포함됩니다.

SVL\_STATEMENTTEXT는 모든 사용자에게 표시됩니다. 수퍼유저는 모든 행을 볼 수 있지만 일반 사용자는 자체 데이터만 볼 수 있습니다. 자세한 내용은 [시스템 테이블 및 뷰에 있는 데이터의 가시성](cm_chap_system-tables.md#c_visibility-of-data) 섹션을 참조하세요.

이 테이블의 데이터 중 일부 또는 전부는 SYS 모니터링 뷰인 [SYS\_QUERY\_HISTORY](SYS_QUERY_HISTORY.md)에서도 찾아볼 수 있습니다. SYS 모니터링 뷰의 데이터는 사용 및 이해가 더 쉽도록 형식이 지정되어 있습니다. 쿼리에 SYS 모니터링 뷰를 사용하는 것이 좋습니다.

## 테이블 열
<a name="r_SVL_STATEMENTTEXT-table-columns"></a>


| 열 이름  | 데이터 유형  | 설명  | 
| --- | --- | --- | 
| userid  | 정수  | 항목을 생성한 사용자의 ID. | 
| xid  | bigint  | 문에 연결된 트랜잭션 ID. | 
| pid  | 정수  | 문의 프로세스 ID. | 
| 레이블  | character(320)  | 쿼리 실행에 사용되는 파일의 이름 또는 SET QUERY\_GROUP 명령을 사용하여 정의되는 레이블. 쿼리가 파일 기반이 아니거나 QUERY\_GROUP 파라미터가 설정되지 않은 경우, 이 필드의 값은 공백입니다. | 
| starttime  | timestamp | 문이 실행되기 시작한 정확한 UTC 시간으로 정확한 소수부 초를 나타내는 여섯 자리가 포함됩니다. 예: 2009-06-12 11:29:19.131358  | 
| endtime  | timestamp | 문이 실행이 종료된 정확한 UTC 시간으로 정확한 소수부 초를 나타내는 여섯 자리가 포함됩니다. 예: 2009-06-12 11:29:19.193640  | 
| SEQUENCE  | 정수  | 단일 문에 200자 이상이 포함된 경우, 해당 문에 대해 추가 행이 기록됩니다. 시퀀스 0이 첫 번째 행이고 1이 두 번째 행이 되는 방식입니다. | 
| 유형  | varchar(10)  | SQL 문의 유형: QUERY, DDL 또는 UTILITY. | 
| 텍스트  | character(200)  | 200자씩 증가하는 SQL 텍스트. 이 필드에는 백슬래시(\\\\) 및 줄 바꿈(\\n) 등의 특수 문자가 포함될 수 있습니다. | 

## 샘플 쿼리
<a name="r_SVL_STATEMENTTEXT-sample-query"></a>

다음 쿼리는 2009년 6월 16일에 실행된 DDL 문을 반환합니다.

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

### 저장된 SQL 재구성
<a name="r_SVL_STATEMENTTEXT-reconstruct-sql"></a>

SVL\_STATEMENTTEXT의 `text` 열에 저장된 SQL을 재구성하려면 SELECT 문을 실행하여 `text` 열의 1개 이상의 부분에서 SQL을 생성합니다. 재구성된 SQL을 실행하기 전에 모든 (`\n`) 특수 문자를 줄 바꿈으로 바꿉니다. 다음 SELECT 문의 결과는 `query_statement` 필드에서 재구성된 SQL의 행입니다.

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

예를 들어 다음 쿼리는 열 3개를 선택합니다. 쿼리 자체는 200자 이상이며 SVL\_STATEMENTTEXT에 여러 부분으로 저장됩니다.

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

이 예제에서 이 쿼리는 SVL\_STATEMENTTEXT의 `text` 열에 많은 두 부분(행)으로 저장됩니다.

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

STL\_STATEMENTTEXT에 저장된 SQL을 재구성하려면 다음 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();
```

클라이언트에서 재구성된 SQL을 사용하려면 모든 (`\n`) 특수 문자를 줄 바꿈으로 바꿉니다.

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