

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# Amazon Redshift RSQL 中繼命令
<a name="rsql-query-tool-commands"></a>

Amazon Redshift RSQL 中繼命令會傳回有關資料庫或特定資料庫物件的資訊記錄。結果中可以包含各種資料行和中繼資料。其他命令會執行特定動作。這些命令的前面會加上反斜線。

## \$1d[S\$1]
<a name="rsql-query-tool-describe-d"></a>

 列出本機使用者建立的資料表、一般視觀表、晚期繫結視觀表及具體化視觀表。`\dS ` 也會列出資料表和視觀表 (例如 `\d`)，但系統物件包含在傳回的記錄中。`+` 會導致所有列出的物件產生額外的中繼資料資料行 `description`。以下示範執行命令所傳回的範例記錄。

```
List of relations
 schema |   name    | type  |  owner  
--------+-----------+-------+---------
 public | category  | table | awsuser
 public | date      | table | awsuser
 public | event     | table | awsuser
 public | listing   | table | awsuser
 public | sales     | table | awsuser
 public | users     | table | awsuser
 public | venue     | table | awsuser
(7 rows)
```

## \$1d[S\$1] NAME
<a name="rsql-query-tool-describe-s-plus-named"></a>

描述資料表、視觀表或索引。包括資料行名稱和類型。其還會提供 diststyle、備份組態、建立日期 (2018 年 10 月之後建立的資料表) 和限制。例如，`\dS+ sample` 會傳回物件屬性。附加 `S+` 會導致所傳回的記錄中包含額外資料行。

```
Table "public.sample"
 Column |            Type             |   Collation    | Nullable | Default Value | Encoding  | DistKey | SortKey
--------+-----------------------------+----------------+----------+---------------+-----------+---------+---------
 col1   | smallint                    |                | NO       |               | none      | t       | 1
 col2   | character(100)              | case_sensitive | YES      |               | none      | f       | 2
 col3   | character varying(100)      | case_sensitive | YES      |               | text32k   | f       | 3
 col4   | timestamp without time zone |                | YES      |               | runlength | f       | 0
 col5   | super                       |                | YES      |               | zstd      | f       | 0
 col6   | bigint                      |                | YES      |               | az64      | f       | 0

Diststyle: KEY
Backup: YES
Created: 2021-07-20 19:47:27.997045
Unique Constraints:
    "sample_pkey" PRIMARY KEY (col1)
    "sample_col2_key" UNIQUE (col2)
Foreign-key constraints:
    "sample_col2_fkey" FOREIGN KEY (col2) REFERENCES lineitem(l_orderkey)
```

資料表的分佈樣式 (簡稱 *Diststyle*) 可以是 KEY、AUTO、EVEN 或 ALL。

*Backup* 會指出在擷取快照時是否有備份資料表。有效值為 `YES` 或 `NO`。

*Created* 是建立資料表時的時間戳記。建立日期不適用於 2018 年 11 月之前建立的 Amazon Redshift 資料表。在此日期之前建立的資料表會顯示 n/a (不適用)。

*Unique Constraints* 會列出資料表上唯一的和主索引鍵的限制。

*Foreign-key constraints* 會列出資料表上的外部索引鍵限制。

## \$1dC[\$1] [PATTERN]
<a name="rsql-query-tool-describe-dc"></a>

列出轉換。包括來源類型、目標類型，以及轉換是否為隱含。

以下示範 `\dC+` 的結果子集。

```
List of casts
         source type         |         target type         |      function       |   implicit?   | description 
-----------------------------+-----------------------------+---------------------+---------------+-------------
 "char"                      | character                   | bpchar              | in assignment | 
 "char"                      | character varying           | text                | in assignment | 
 "char"                      | integer                     | int4                | no            | 
 "char"                      | text                        | text                | yes           | 
 "path"                      | point                       | point               | no            | 
 "path"                      | polygon                     | polygon             | in assignment | 
 abstime                     | date                        | date                | in assignment | 
 abstime                     | integer                     | (binary coercible)  | no            | 
 abstime                     | time without time zone      | time                | in assignment | 
 abstime                     | timestamp with time zone    | timestamptz         | yes           | 
 abstime                     | timestamp without time zone | timestamp           | yes           | 
 bigint                      | bit                         | bit                 | no            | 
 bigint                      | boolean                     | bool                | yes           | 
 bigint                      | character                   | bpchar              | in assignment | 
 bigint                      | character varying           | text                | in assignment | 
 bigint                      | double precision            | float8              | yes           | 
 bigint                      | integer                     | int4                | in assignment | 
 bigint                      | numeric                     | numeric             | yes           | 
 bigint                      | oid                         | oid                 | yes           | 
 bigint                      | real                        | float4              | yes           | 
 bigint                      | regclass                    | oid                 | yes           | 
 bigint                      | regoper                     | oid                 | yes           | 
 bigint                      | regoperator                 | oid                 | yes           | 
 bigint                      | regproc                     | oid                 | yes           | 
 bigint                      | regprocedure                | oid                 | yes           | 
 bigint                      | regtype                     | oid                 | yes           | 
 bigint                      | smallint                    | int2                | in assignment | 
 bigint                      | super                       | int8_partiql        | in assignment |
```

## \$1dd[S] [PATTERN]
<a name="rsql-query-tool-describe-dds"></a>

顯示其他地方未顯示的物件描述。

## \$1de
<a name="rsql-query-tool-describe-de"></a>

列出外部資料表。這包括 中的資料表 AWS Glue Data Catalog、Hive 中繼存放區和來自 Amazon RDS/Aurora MySQL、Amazon RDS/Aurora PostgreSQL 和 Amazon Redshift 資料共用資料表的聯合資料表。

## \$1de NAME
<a name="rsql-query-tool-describe-de-name"></a>

描述外部資料表。

下列範例顯示 AWS Glue 外部資料表。

```
# \de spectrum.lineitem
                            Glue External table "spectrum.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_shipdate      | date          | date          | 11       | 0             |
 l_commitdate    | date          | date          | 12       | 0             |
 l_receiptdate   | date          | date          | 13       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 14       | 0             |
 l_shipmode      | char(10)      | char(10)      | 15       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 16       | 0             |

Location: s3://redshiftbucket/kfhose2019/12/31
Input_format: org.apache.hadoop.mapred.TextInputFormat
Output_format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serialization_lib: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
Serde_parameters: {"field.delim":"|","serialization.format":"|"}
Parameters: {"EXTERNAL":"TRUE","numRows":"178196721475","transient_lastDdlTime":"1577771873"}
```

Hive Metastore 資料表。

```
# \de emr.lineitem
                     Hive Metastore External Table "emr.lineitem"
     Column      | External Type | Redshift Type | Position | Partition Key | Nullable
-----------------+---------------+---------------+----------+---------------+----------
 l_orderkey      | bigint        | bigint        | 1        | 0             |
 l_partkey       | bigint        | bigint        | 2        | 0             |
 l_suppkey       | int           | int           | 3        | 0             |
 l_linenumber    | int           | int           | 4        | 0             |
 l_quantity      | decimal(12,2) | decimal(12,2) | 5        | 0             |
 l_extendedprice | decimal(12,2) | decimal(12,2) | 6        | 0             |
 l_discount      | decimal(12,2) | decimal(12,2) | 7        | 0             |
 l_tax           | decimal(12,2) | decimal(12,2) | 8        | 0             |
 l_returnflag    | char(1)       | char(1)       | 9        | 0             |
 l_linestatus    | char(1)       | char(1)       | 10       | 0             |
 l_commitdate    | date          | date          | 11       | 0             |
 l_receiptdate   | date          | date          | 12       | 0             |
 l_shipinstruct  | char(25)      | char(25)      | 13       | 0             |
 l_shipmode      | char(10)      | char(10)      | 14       | 0             |
 l_comment       | varchar(44)   | varchar(44)   | 15       | 0             |
 l_shipdate      | date          | date          | 16       | 1             |

Location: s3://redshiftbucket/cetas
Input_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat
Output_format: org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat
Serialization_lib: org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe
Serde_parameters: {"serialization.format":"1"}
Parameters: {"EXTERNAL":"TRUE", "numRows":"4307207", "transient_lastDdlTime":"1626990007"}
```

PostgreSQL 外部資料表。

```
# \de pgrsql.alltypes
                                Postgres Federated Table "pgrsql.alltypes"
 Column |        External Type        |        Redshift Type        | Position | Partition Key | Nullable
--------+-----------------------------+-----------------------------+----------+---------------+----------
 col1   | bigint                      | bigint                      | 1        | 0             |
 col2   | bigint                      | bigint                      | 2        | 0             |
 col5   | boolean                     | boolean                     | 3        | 0             |
 col6   | box                         | varchar(65535)              | 4        | 0             |
 col7   | bytea                       | varchar(65535)              | 5        | 0             |
 col8   | character(10)               | character(10)               | 6        | 0             |
 col9   | character varying(10)       | character varying(10)       | 7        | 0             |
 col10  | cidr                        | varchar(65535)              | 8        | 0             |
 col11  | circle                      | varchar(65535)              | 9        | 0             |
 col12  | date                        | date                        | 10       | 0             |
 col13  | double precision            | double precision            | 11       | 0             |
 col14  | inet                        | varchar(65535)              | 12       | 0             |
 col15  | integer                     | integer                     | 13       | 0             |
 col16  | interval                    | varchar(65535)              | 14       | 0             |
 col17  | json                        | varchar(65535)              | 15       | 0             |
 col18  | jsonb                       | varchar(65535)              | 16       | 0             |
 col19  | line                        | varchar(65535)              | 17       | 0             |
 col20  | lseg                        | varchar(65535)              | 18       | 0             |
 col21  | macaddr                     | varchar(65535)              | 19       | 0             |
 col22  | macaddr8                    | varchar(65535)              | 20       | 0             |
 col23  | money                       | varchar(65535)              | 21       | 0             |
 col24  | numeric                     | numeric(38,20)              | 22       | 0             |
 col25  | path                        | varchar(65535)              | 23       | 0             |
 col26  | pg_lsn                      | varchar(65535)              | 24       | 0             |
 col28  | point                       | varchar(65535)              | 25       | 0             |
 col29  | polygon                     | varchar(65535)              | 26       | 0             |
 col30  | real                        | real                        | 27       | 0             |
 col31  | smallint                    | smallint                    | 28       | 0             |
 col32  | smallint                    | smallint                    | 29       | 0             |
 col33  | integer                     | integer                     | 30       | 0             |
 col34  | text                        | varchar(65535)              | 31       | 0             |
 col35  | time without time zone      | varchar(65535)              | 32       | 0             |
 col36  | time with time zone         | varchar(65535)              | 33       | 0             |
 col37  | timestamp without time zone | timestamp without time zone | 34       | 0             |
 col38  | timestamp with time zone    | timestamp with time zone    | 35       | 0             |
 col39  | tsquery                     | varchar(65535)              | 36       | 0             |
 col40  | tsvector                    | varchar(65535)              | 37       | 0             |
 col41  | txid_snapshot               | varchar(65535)              | 38       | 0             |
 col42  | uuid                        | varchar(65535)              | 39       | 0             |
 col43  | xml                         | varchar(65535)              | 40       | 0             |
```

## \$1df[anptw][S\$1] [PATTERN]
<a name="rsql-query-tool-df"></a>

 列出各種類型的函數。例如，命令 `\df` 會傳回函數清單。結果包括名稱、傳回的資料類型、存取權限和其他中繼資料等屬性。函數類型可以包括觸發條件、預存程序、視窗函數和其他類型。當您附加 `S+` 至命令時 (例如 `\dfantS+`)，其中會包括其他中繼資料資料行，例如 `owner`、`security` 和 `access privileges`。

## \$1dL[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dl"></a>

 列出與資料庫相關聯之程序語言的相關資料。資訊中會包括名稱 (例如 plpgsql) 和其他中繼資料，其中包括其是否受信任、存取權限和描述。例如，範例呼叫是會列出語言及其屬性的 `\dLS+`。當您附加 `S+` 至命令時，其中會包括其他中繼資料資料行，例如 `call handler` 和 `access privileges`。

範例結果：

```
List of languages
   name    | trusted | internal language |      call handler       |                         validator                          | access privileges |          description           
-----------+---------+-------------------+-------------------------+------------------------------------------------------------+-------------------+--------------------------------
 c         | f       | t                 | -                       | fmgr_c_validator(oid)                                      |                   | Dynamically-loaded C functions
 exfunc    | f       | f                 | exfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 internal  | f       | t                 | -                       | fmgr_internal_validator(oid)                               |                   | Built-in functions
 mlfunc    | f       | f                 | mlfunc_call_handler()   | -                                                          | rdsdb=U/rdsdb     | 
 plpgsql   | t       | f                 | plpgsql_call_handler()  | plpgsql_validator(oid)                                     |                   | 
 plpythonu | f       | f                 | plpython_call_handler() | plpython_compiler(cstring,cstring,cstring,cstring,cstring) | rdsdb=U/rdsdb     | 
 sql       | t       | t                 | -                       | fmgr_sql_validator(oid)                                    | =U/rdsdb          | SQL-language functions
```

## \$1dm[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dm"></a>

 列出具體化視觀表。例如，`\dmS+` 會列出具體化視觀表及其屬性。當您附加 `S+` 至命令時，其中會包括其他中繼資料資料行。

## \$1dn[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dn"></a>

 列出結構描述。當您附加 `S+` 至命令時 (例如 `\dnS+`)，其中會包括其他中繼資料資料行，例如 `description` 和 `access privileges`。

## \$1dp [PATTERN]
<a name="rsql-query-tool-describe-dp"></a>

 列出資料表、視觀表和序列存取權限。

## \$1dt[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dt"></a>

 列出資料表。當您附加 `S+` 至命令時 (例如 `\dtS+`)，其中會包括其他中繼資料資料行，例如本案例中的 `description`。

## \$1du
<a name="rsql-query-tool-describe-du"></a>

 列出資料庫的使用者。包括其名稱及其角色 (例如超級使用者) 和屬性。

## \$1dv[S\$1] [PATTERN]
<a name="rsql-query-tool-describe-dv"></a>

 列出視觀表。包括結構描述、類型和擁有者資料。當您附加 `S+` 至命令時 (例如 `\dvS+`)，其中會包括其他中繼資料資料行。

## \$1H
<a name="rsql-query-tool-describe-h"></a>

 開啟 HTML 輸出。這對於快速傳回格式化結果非常有用。例如，`select * from sales; \H` 會以 HTML 格式傳回銷售資料表的結果。若要切換回表格式結果，請使用 `\q` 或靜音。

## \$1i
<a name="rsql-query-tool-describe-i"></a>

 從檔案執行命令。例如，假設工作目錄中有 rsql\$1steps.sql，以下內容會執行檔案中的命令：`\i rsql_steps.sql`。

## \$1l[\$1] [PATTERN]
<a name="rsql-query-tool-describe-l"></a>

 列出資料庫。包括擁有者、編碼和其他資訊。

## \$1q
<a name="rsql-query-tool-describe-q"></a>

 結束或 `\q` 命令會登出資料庫工作階段並結束 RSQL。

## \$1sv[\$1] VIEWNAME
<a name="rsql-query-tool-describe-sv-name"></a>

 顯示視觀表的定義。

## \$1timing
<a name="rsql-query-tool-describe-timing"></a>

 例如，顯示查詢的執行時間。

## \$1z [PATTERN]
<a name="rsql-query-tool-describe-z"></a>

 與 \$1dp 相同的輸出。

## \$1?
<a name="rsql-query-tool-help"></a>

 顯示說明資訊。選用參數會指定要解釋的項目。

## \$1EXIT
<a name="rsql-query-tool-flow-control-exit"></a>

 登出所有資料庫工作階段並結束 Amazon Redshift RSQL。此外，您也可以指定選用的結束代碼。例如，`\EXIT 15` 會結束 Amazon Redshift RSQL 終端並傳回結束代碼 15。

以下範例示範從連線輸出以及從 RSQL 結束。

```
% rsql -D testuser
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.34.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306 
Type "help" for help.

(testcluster) user1@dev=# \exit 15

% echo $?
15
```

## \$1EXPORT
<a name="rsql-query-tool-export"></a>

 指定 RSQL 用來儲存後續 SQL SELECT 陳述式所傳回之資料庫資訊的匯出檔案名稱。

export\$101.sql

```
\export report file='E:\\accounts.out'
\rset rformat off
\rset width 1500
\rset heading "General Title"
\rset titledashes on
select * from td_dwh.accounts;
\export reset
```

主控台輸出

```
Rformat is off.
Target width is 1500.
Heading is set to: General Title
Titledashes is on.
(exported 40 rows)
```

## \$1LOGON
<a name="rsql-query-tool-flow-control-logon"></a>

 連線至資料庫。您可以使用位置語法或連線字串形式指定連線參數。

命令語法如下：`\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`

`DBNAME` 是所連線的資料庫名稱。`USERNAME` 是連線時所用身分的使用者名稱。預設的 `HOST` 是 `localhost`。預設的 `PORT` 是 `5439`。

在 `\LOGON` 命令中指定主機名稱時，其會變成其他 `\LOGON` 命令的預設主機名稱。若要變更預設主機名稱，請在另外的 `\LOGON` 命令中指定新的 `HOST`。

來自 `user1` 之 `\LOGON` 命令的範例輸出如下。

```
(testcluster) user1@redshiftdb=# \logon dev
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user1".
(testcluster) user1@dev=#
```

*user2* 的範例輸出。

```
(testcluster) user1@dev=# \logon dev user2 testcluster2.example.com
Password for user user2: 
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
You are now connected to database "dev" as user "user2" on host "testcluster2.example.com" at port "5439".
(testcluster2) user2@dev=#
```

## \$1REMARK
<a name="rsql-query-tool-flow-control-remark"></a>

 `\echo` 命令的延伸。`\REMARK` 會將指定字串列印至輸出串流。`\REMARK ` 會透過新增將輸出換行到不同行的能力來延伸 `\echo`。

以下範例示範命令的輸出。

```
(testcluster) user1@dev=# \remark 'hello//world'
hello
world
```

## \$1RSET
<a name="rsql-query-tool-rset"></a>

命令 `\rset` 會設定命令參數和變數。`\rset` 同時具有互動式模式和批次模式。其不支援將選項作為 bash 選項，如 *-x* 或引數，例如 *--<arg>*。

其會設定變數，如下所示：
+ ERRORLEVEL
+ HEADING 和 RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

以下範例會指定標題。

```
\rset heading "Winter Sales Report"
```

如需更多如何使用 `\rset` 的範例，您可以在 [Amazon Redshift RSQL 變數](rsql-query-tool-variables.md) 主題中找到幾個。

## \$1RUN
<a name="rsql-query-tool-flow-control-run"></a>

 執行指定檔案中包含的 Amazon Redshift RSQL 指令碼。`\RUN` 會透過新增選項來擴展 `\i` 命令，以略過檔案中的標題行。

如果檔案名稱包含逗號、分號或空格，請以單引號將其括住。此外，如果檔案名稱後面有文字，請以引號將其括住。在 UNIX 中，檔案名稱會區分大小寫。在 Windows 中，檔案名稱不區分大小寫。

以下範例示範命令的輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as lineitem_cnt from lineitem;
select count(*) as customer_cnt from customer;
select count(*) as orders_cnt from orders;



(testcluster) user1@dev=# \run file=test.sql
 lineitem_cnt
--------------
      4307207
(1 row)

 customer_cnt
--------------
     37796166
(1 row)

 orders_cnt
------------
          0
(1 row)


(testcluster) user1@dev=# \run file=test.sql skip=2
2 records skipped in RUN file.
 orders_cnt
------------
          0
(1 row)
```

## \$1OS
<a name="rsql-query-tool-flow-control-os"></a>

 `\!` 命令的別名。`\OS` 會執行以參數的形式傳遞的作業系統命令。執行命令後，控制項會回到 Amazon Redshift RSQL。例如，您可以執行以下命令來列印目前的系統日期時間，並返回 RSQL 終端：`\os date`。

```
(testcluster) user1@dev=# \os date
Tue Sep 7 20:47:54 UTC 2021
```

## \$1GOTO
<a name="rsql-query-tool-flow-control-goto"></a>

 Amazon Redshift RSQL 的新命令。`\GOTO` 會略過所有中間命令，並在指定的 `\LABEL` 繼續處理。`\LABEL` 必須是前向參照。你不能跳到詞法上在 `\GOTO` 之前的 `\LABEL`。

下面顯示了範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) as cnt from lineitem \gset
select :cnt as cnt;
\if :cnt > 100
    \goto LABELB
\endif

\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'


(testcluster) user1@dev=# \i test.sql
   cnt
---------
 4307207
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1LABEL
<a name="rsql-query-tool-flow-control-label"></a>

 Amazon Redshift RSQL 的新命令。`\LABEL` 會建立用於執行程式的進入點，以作為 `\GOTO` 命令的目標。

以下示範命令的範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
select count(*) from lineitem limit 5;
\goto LABELB
\remark "this step was skipped by goto label";
\label LABELA
\remark 'this is label LABELA'
\label LABELB
\remark 'this is label LABELB'



(testcluster) user1@dev=# \i testgoto.sql
  count
 4307193
(1 row)

\label LABELA ignored
\label LABELB processed
this is label LABELB
```

## \$1IF (\$1ELSEIF, \$1ELSE, \$1ENDIF)
<a name="rsql-query-tool-flow-control-if"></a>

 `\IF` 和相關命令會有條件地執行輸入指令碼的某些部分。PSQL `\if` (`\elif`、`\else`、`\endif`) 命令的延伸。`\IF` 和 `\ELSEIF` 支援布林運算式，包括 `AND`、`OR` 和 `NOT` 條件。

以下示範命令的範例輸出。

```
(testcluster) user1@dev=# \! cat test.sql
SELECT query FROM stv_inflight LIMIT 1 \gset
select :query as query;
\if :query > 1000000
    \remark 'Query id is greater than 1000000'
\elseif :query = 1000000
    \remark 'Query id is equal than 1000000'
\else
    \remark 'Query id is less than 1000000'
\endif


(testcluster) user1@dev=# \i test.sql 
 query
--------
 994803
(1 row)
 
Query id is less than 1000000
```

在您的分支邏輯中使用 `ERRORCODE`。

```
\if :'ERRORCODE' = '00000'
    \remark 'The statement was executed without error'
\else
    \remark :LAST_ERROR_MESSAGE
\endif
```

在 `\IF` 區塊內使用 `\GOTO` 來控制程式碼的執行方式。