

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Metacomandos do Amazon Redshift RSQL
<a name="rsql-query-tool-commands"></a>

Os metacomandos do Amazon Redshift RSQL retornam registros informativos sobre bancos de dados ou sobre objetos específicos do banco de dados. Os resultados podem incluir várias colunas e metadados. Outros comandos executam ações específicas. Esses comandos são precedidos por uma barra invertida.

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

 Lista tabelas criadas pelo usuário local, visualizações regulares, visualizações de vinculação tardia e visões materializadas.`\dS ` também lista tabelas e visualizações, como `\d`, mas os objetos do sistema são incluídos nos registros retornados. O `+` resulta na coluna de metadados adicionais `description` para todos os objetos listados. A seguir, veja exemplos de registros retornados como resultado do comando. 

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

Descreve uma tabela, uma visualização ou um índice. Inclui os nomes e tipos de colunas. Fornece também o diststyle, a configuração de backup, a data de criação (tabelas criadas após outubro de 2018) e restrições. Por exemplo, `\dS+ sample` retorna propriedades do objeto. Anexar `S+` resulta em colunas adicionais incluídas nos registros retornados.

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

O estilo de distribuição, ou *Diststyle*, da tabela pode ser KEY, AUTO, EVEN ou ALL.

*Backup* indica se o backup da tabela é feito quando se obtém um snapshot. Os valores válidos são `YES` ou `NO`.

*Created* (Criado) é o carimbo de data/hora para quando a tabela é criada. A data de criação não está disponível para tabelas do Amazon Redshift criadas antes de novembro de 2018. As tabelas criadas antes desta data exibem n/a (não disponível). 

*Unique Constraints* (Restrições exclusivas) lista restrições de chave exclusivas e primárias na tabela.

*Foreign-key constraints* (Restrições de chave estrangeira) lista restrições de chave estrangeira na tabela.

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

Lista conversões. Inclui o tipo de origem, o tipo de destino e se a conversão está implícita.

Veja a seguir um subconjunto de resultados de `\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>

Mostra descrições de objetos que não são exibidas em outro lugar.

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

Lista tabelas externas. Isso inclui tabelas no AWS Glue Data Catalog e no Hive Metastore e tabelas federadas de unidade de compartilhamento de dados do Amazon RDS/Aurora MySQL, Amazon RDS/Aurora PostgreSQL e Amazon Redshift.

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

Descreve uma tabela externa.

A consulta de exemplo a seguir mostra uma tabela externa do 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"}
```

Uma tabela 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"}
```

Tabela externa do 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>

 Lista funções de vários tipos. O comando `\df`, por exemplo, retorna uma lista de funções. Os resultados incluem propriedades como nome, tipo de dados retornado, privilégios de acesso e outros metadados. Os tipos de função podem incluir acionadores, procedimentos armazenados, funções da janela e outros tipos. Quando você acrescenta `S+` ao comando, por exemplo `\dfantS+`, colunas de metadados adicionais são incluídas, como `owner`, `security` e `access privileges`. 

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

 Lista dados sobre linguagens processuais associadas ao banco de dados. As informações incluem o nome, como plpgsql, e outros metadados, que incluem confiabilidade, privilégios de acesso e descrição. A chamada de amostra é, por exemplo, `\dLS+`, que lista linguagens e suas propriedades. Quando você acrescenta `S+` ao comando, colunas de metadados adicionais são incluídas, como `call handler` e `access privileges`. 

Exemplos de resultados:

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

 Lista visões materializadas. Por exemplo, `\dmS+` lista visões materializadas e suas propriedades. Quando você acrescenta `S+` ao comando, colunas de metadados adicionais são incluídas. 

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

 Lista os esquemas. Quando você acrescenta `S+` ao comando, por exemplo `\dnS+`, colunas de metadados adicionais são incluídas, como `description` e `access privileges`. 

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

 Lista os privilégios de acesso à tabela, visualização e sequência. 

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

 Lista tabelas. Quando você acrescenta `S+` ao comando, por exemplo `\dtS+`, colunas de metadados adicionais são incluídas, como `description`, neste caso. 

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

 Lista os usuários do banco de dados. Inclui o nome e suas funções, como superusuário, e atributos. 

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

 Lista as visualizações. Inclui esquema, tipo e proprietário dos dados. Quando você acrescenta `S+` ao comando, por exemplo `\dvS+`, colunas de metadados adicionais são incluídas. 

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

 Ativa a saída HTML. Isso é útil para retornar rapidamente resultados formatados. Por exemplo, `select * from sales; \H` retorna resultados da tabela de vendas, em HTML. Para voltar aos resultados tabulares, use `\q` ou quiet. 

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

 Executa comandos de um arquivo. Por exemplo, supondo que você tenha rsql\$1steps.sql em seu diretório de trabalho, o seguinte executa os comandos no arquivo: `\i rsql_steps.sql`. 

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

 Lista bancos de dados. Inclui proprietário, codificação e outras informações. 

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

 O encerramento, ou comando `\q`, faz logoff das sessões do banco de dados e fecha o RSQL. 

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

 Exibe a definição de uma visualização. 

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

 Mostra o tempo de execução, de uma consulta, por exemplo. 

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

 A mesma saída que \$1dp. 

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

 Exibe informações de ajuda. O parâmetro opcional especifica o item a ser explicado. 

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

 Faz logoff de todas as sessões de banco de dados e fecha o Amazon Redshift RSQL. Além disso, é possível especificar um código de saída opcional. Por exemplo, `\EXIT 15` fechará o terminal RSQL do Amazon Redshift e retornará o código de saída 15.

O exemplo a seguir mostra a saída de uma conexão e saída do 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>

 Especifica o nome de um arquivo de exportação que o RSQL usa para armazenar informações de banco de dados retornadas por uma instrução SQL SELECT subsequente.

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

Resultado no console

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

 Conecta-se a um banco de dados. É possível especificar parâmetros de conexão usando a sintaxe posicional ou como uma cadeia de conexão.

A sintaxe de comando é a seguinte: `\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`

`DBNAME` é o nome do banco de dados ao qual se conectar. `USERNAME` é nome de usuário ao qual se conectar. O `HOST` padrão é `localhost`. O `PORT` padrão é `5439`.

Quando um nome de host é especificado em um comando `\LOGON`, ele se torna o nome de host padrão para outros comandos `\LOGON`. Para alterar o nome do host padrão, especifique um novo `HOST` em outro comando `\LOGON`.

A seguir, veja um exemplo de saída do comando `\LOGON` para `user1`.

```
(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=#
```

Exemplo de saída para *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>

 Uma extensão do comando `\echo`. `\REMARK` imprime a string especificada no fluxo de saída. `\REMARK ` estende `\echo` adicionando a capacidade de dividir a saída em linhas separadas.

O exemplo a seguir mostra a saída do comando.

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

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

O comando `\rset` define parâmetros e variáveis de comando. O `\rset` tem um modo interativo e um modo em lote. Ele não é compatível com opções como opções bash, por exemplo, *-x*, nem com argumentos, por exemplo *--<arg>*.

Ele define variáveis, como as seguintes:
+ ERRORLEVEL
+ HEADING e RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

O exemplo a seguir especifica um cabeçalho.

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

Você pode encontrar mais exemplos de como usar `\rset`, nos tópicos sobre [Variáveis do Amazon Redshift RSQL](rsql-query-tool-variables.md). 

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

 Executa o script Amazon Redshift RSQL contido no arquivo especificado. `\RUN` estende o comando `\i` adicionando uma opção para ignorar linhas de cabeçalho de um arquivo.

Se o nome do arquivo contiver uma vírgula, ponto e vírgula ou espaço, coloque-o entre aspas simples. Além disso, se o nome do arquivo for procedido de texto, coloque-o entre aspas. Em UNIX, os nomes dos arquivos diferenciam letras maiúsculas de minúsculas. No Windows, os nomes de arquivos não diferenciam maiúsculas de minúsculas.

O exemplo a seguir mostra a saída do comando.

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

 Um alias para o `\!` comando. `\OS` executa o comando do sistema operacional que é passado como um parâmetro. O controle retorna ao Amazon Redshift RSQL após a execução do comando. Por exemplo, você pode executar este comando para imprimir a data e hora atual do sistema e retornar ao terminal 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>

 Um novo comando para o Amazon Redshift RSQL. `\GOTO` ignora todos os comandos intervenientes e retoma o processamento no `\LABEL` especificado. O `\LABEL` deve ser uma referência de encaminhamento. Não é possível pular para um `\LABEL` que preceda lexicamente o `\GOTO`.

Veja a seguir um exemplo de saída.

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

 Um novo comando para o Amazon Redshift RSQL. `\LABEL` estabelece um ponto de entrada para executar o programa, como o destino para um comando `\GOTO`.

O exemplo a seguir exibe a saída do comando.

```
(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` e comandos relacionados executam condicionalmente partes do script de entrada. Uma extensão do comando PSQL `\if` (`\elif`, `\else`, `\endif`). `\IF` e `\ELSEIF` oferecem suporte a expressões boolianas, inclusive condições `AND`, `OR` e `NOT`. 

O exemplo a seguir exibe a saída dos comandos.

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

Use `ERRORCODE` em sua lógica de ramificação.

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

Use `\GOTO` dentro de um bloco `\IF` para controlar como o código será executado.