

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

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

Los metacomandos de Amazon Redshift RSQL devuelven registros informativos sobre bases de datos u objetos de base de datos específicos. Los resultados pueden incluir varias columnas y metadatos. Otros comandos realizan acciones específicas. Estos comandos van precedidos de una barra invertida.

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

 Muestra las tablas creadas por el usuario local, las vistas regulares, las vistas de enlace tardío y las vistas materializadas. `\dS ` también enumera tablas y vistas, como `\d`, pero los objetos del sistema se incluyen en los registros devueltos. Los resultados `+` en la columna de metadatos adicionales `description` para todos los objetos enumerados. A continuación se muestran los registros de ejemplo devueltos como resultado del 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] NOMBRE
<a name="rsql-query-tool-describe-s-plus-named"></a>

Describe una tabla, vista o índice. Incluye los nombres y tipos de columnas. También proporciona el estilo diststyle, la configuración de copias de seguridad, la fecha de creación (tablas creadas después de octubre de 2018) y las restricciones. Por ejemplo, `\dS+ sample` devuelve las propiedades de objeto. Anexar `S+` da como resultado columnas adicionales incluidas en los registros devueltos.

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

El estilo de distribución, o *Diststyle*, de la tabla puede ser KEY, AUTO, EVEN o ALL.

*Backup* indica si se realiza una copia de seguridad de la tabla cuando se toma una instantánea. Los valores válidos son `YES` o `NO`.

*Create* es la marca de tiempo de cuando se crea la tabla. La fecha de creación no está disponible para las tablas de Amazon Redshift creadas antes de noviembre de 2018. Las tablas creadas antes de esta fecha muestran n/a (No disponible). 

*Unique Constraints* enumera las restricciones de clave única y principal de la tabla.

*Foreign-key constraints* enumera las restricciones de clave extranjera de la tabla.

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

Enumera las conversiones. Incluye el tipo de origen, el tipo de destino y si la conversión está implícita.

A continuación, se muestra un 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] [PATRÓN]
<a name="rsql-query-tool-describe-dds"></a>

Muestra las descripciones de objetos que no se muestran en ningún otro lugar.

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

Muestra las tablas externas. Esto incluye las tablas del AWS Glue Data Catalog, Hive Metastore y tablas federadas de Amazon RDS/Aurora MySQL, Amazon RDS/Aurora PostgreSQL y tablas de recursos compartidos de datos de Amazon Redshift.

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

Describe una tabla externa.

El siguiente ejemplo muestra una tabla externa de 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"}
```

Una tabla de 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"}
```

Tabla externa de 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] [PATRÓN]
<a name="rsql-query-tool-df"></a>

 Enumera funciones de varios tipos. El comando `\df`, por ejemplo, devuelve una lista de funciones. Los resultados incluyen propiedades como nombre, tipo de datos devuelto, privilegios de acceso y metadatos adicionales. Los tipos de funciones pueden incluir desencadenadores, procedimientos almacenados, funciones de ventana y otros tipos. Cuando anexa `S+` al comando, por ejemplo, `\dfantS+`, se incluyen columnas de metadatos adicionales, como`owner`, `security` y `access privileges`. 

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

 Enumera datos sobre los lenguajes de procedimiento asociados a la base de datos. La información incluye el nombre, como plpgsql, y metadatos adicionales, que incluyen si es de confianza, privilegios de acceso y descripción. La llamada de muestra es, por ejemplo, `\dLS+`, que enumera los lenguajes y sus propiedades. Cuando anexa `S+` al comando, se incluyen columnas de metadatos adicionales, como `call handler` y `access privileges`. 

Resultados de ejemplo:

```
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] [PATRÓN]
<a name="rsql-query-tool-describe-dm"></a>

 Enumera las vistas materializadas. Por ejemplo, `\dmS+` enumera las vistas materializadas y sus propiedades. Cuando anexa `S+` al comando, se incluyen columnas de metadatos adicionales. 

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

 Enumera esquemas. Cuando anexa `S+` al comando, por ejemplo, `\dnS+`, se incluyen columnas de metadatos adicionales, como `description` y `access privileges`. 

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

 Enumera los privilegios de acceso a tablas, vistas y secuencias. 

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

 Enumera tablas. Cuando anexa `S+` al comando, por ejemplo, `\dtS+`, se incluyen columnas de metadatos adicionales, como `description` en este caso. 

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

 Enumera los usuarios de la base de datos. Incluye su nombre y sus roles, como superusuario y atributos. 

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

 Enumera vistas. Incluye datos de propietario, esquema y tipo. Cuando anexa `S+` al comando, por ejemplo, `\dvS+`, se incluyen columnas de metadatos adicionales. 

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

 Activa la salida HTML. Esto resulta útil para devolver rápidamente los resultados formateados. Por ejemplo, `select * from sales; \H` devuelve los resultados de la tabla de ventas, en HTML. Para volver a los resultados tablulares, utilice `\q`, o inactividad. 

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

 Ejecuta comandos desde un archivo. Por ejemplo, si se asume que tiene rsql\$1steps.sql en el directorio de trabajo, lo siguiente ejecuta los comandos en el archivo: `\i rsql_steps.sql`. 

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

 Enumera bases de datos. Incluye propietario, codificación e información adicional. 

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

 La inactividad, o comando `\q`, cierra la sesión de la base de datos y cierra de RSQL. 

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

 Muestra la definición de una vista. 

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

 Muestra el tiempo de ejecución, para una consulta, por ejemplo. 

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

 El mismo resultado que \$1dp. 

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

 Muestra información de ayuda. El parámetro opcional especifica el elemento que se va a explicar. 

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

 Cierra la sesión de todas las sesiones de base de datos y cierra Amazon Redshift RSQL. Además puede especificar un código de salida opcional. Por ejemplo, `\EXIT 15` saldrá de la terminal de Amazon Redshift RSQL y devolverá el código de salida 15.

En el siguiente ejemplo, se muestra el resultado de una conexión y la salida de 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 el nombre de un archivo de exportación que RSQL utiliza para almacenar la información de la base de datos que devuelve una instrucción SQL SELECT posterior.

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

Salida de la consola

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

 Se conecta a una base de datos. Puede especificar parámetros de conexión mediante sintaxis posicional o como cadena de conexión.

La sintaxis de comandos es la siguiente: `\logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}`

`DBNAME` es el nombre de la base de datos a la que se debe conectar. `USERNAME` es el nombre de usuario para contectarse. El `HOST` predeterminado es `localhost`. El `PORT` predeterminado es `5439`.

Cuando se especifica un nombre de host en un comando `\LOGON`, se convierte en el nombre de host predeterminado para agregar comandos `\LOGON` adicionales. Para cambiar el nombre de host predeterminado, especifique un nuevo `HOST` en un comando `\LOGON` adicional.

A continuación se muestra el resultado de ejemplo del 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=#
```

Resultados de ejemplo de 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>

 Ampliación del comando `\echo`. `\REMARK` imprime la cadena especificada en el flujo de salida. `\REMARK ` amplía `\echo` agregando la capacidad de dividir la salida en líneas separadas.

En el siguiente ejemplo, se muestra la salida desde el comando.

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

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

El comando `\rset` establece parámetros de comando y variables. `\rset` tiene un modo interactivo y otro por lotes. No admite opciones como opciones bash, como *-x*, o argumentos; por ejemplo, *--<arg>*.

Establece variables, como las siguientes:
+ ERRORLEVEL
+ HEADING y RTITLE
+ RFORMAT
+ MAXERROR
+ TITLEDASHES
+ WIDTH

En el siguiente ejemplo, se especifica un encabezado.

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

Para obtener más ejemplos de cómo utilizar `\rset`, puede encontrar varios en los temas de [Variables de Amazon Redshift RSQL](rsql-query-tool-variables.md).

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

 Ejecuta el script de Amazon Redshift RSQL contenido en el archivo especificado. `\RUN` amplía el comando `\i` agregando una opción para omitir líneas de encabezado en un archivo.

Si el nombre del archivo incluye una coma, un punto y coma o un espacio, colóquelo entre comillas simples. Además, si hay texto después del nombre del archivo, colóquelo entre comillas. En UNIX, los nombres de los archivos distinguen mayúsculas de minúsculas. En Windows, los nombres de los archivos distinguen entre mayúsculas y minúsculas.

En el siguiente ejemplo, se muestra la salida desde el 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>

 Un alias para el comando `\!`. `\OS` ejecuta el comando del sistema operativo que se pasa como parámetro. El control vuelve a Amazon Redshift RSQL después de ejecutar el comando. Por ejemplo, puede ejecutar el siguiente comando para imprimir la hora de la fecha actual del sistema y volver al 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>

 Un nuevo comando para Amazon Redshift RSQL. `\GOTO` omite todos los comandos que intervienen y reanuda el procesamiento en el `\LABEL` especificado. El `\LABEL` debe ser una referencia anticipada. No puede saltar a un `\LABEL` que precede léxicamente al `\GOTO`.

A continuación se muestra una salida de ejemplo.

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

 Un nuevo comando para Amazon Redshift RSQL. `\LABEL` establece un punto de entrada para ejecutar el programa, como objetivo de un comando `\GOTO`.

En el siguiente ejemplo, se muestra un ejemplo de salida del 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` y los comandos relacionados ejecutan de forma condicional partes del script de entrada. Extensión de comando `\if` (`\elif`, `\else`, `\endif`) de PSQL. `\IF` y `\ELSEIF` admiten expresiones booleanas, incluidas las condiciones `AND`, `OR` y `NOT`. 

En el siguiente ejemplo, se muestra un ejemplo de salida desde el comando.

```
(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` en su lógica de ramificación.

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

Use `\GOTO` dentro de un bloque `\IF` para controlar cómo se ejecuta el código.