

 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/). 

# Conexão de código e ferramentas clientes
<a name="connecting-via-client-tools"></a>

O Amazon Redshift fornece o editor de consultas v2 do Amazon Redshift para conexão a clusters e grupos de trabalho. Para obter mais informações, consulte [Consultar um banco de dados usando o Editor de Consultas V2Consultar um banco de dados usando o editor de consultas v2 do Amazon Redshift](query-editor-v2.md).

Esta seção fornece algumas opções de ferramentas de terceiros para conexão. Além disso, ela descreve como estabelecer a conexão com o cluster por meio de programação. 

**Topics**
+ [Conectar-se com o Amazon Redshift RSQL](rsql-query-tool.md)
+ [Conectar-se a um cluster com o Amazon Redshift RSQL](rsql-query-tool-starting-tool-connection.md)
+ [Metacomandos do Amazon Redshift RSQL](rsql-query-tool-commands.md)
+ [Variáveis do Amazon Redshift RSQL](rsql-query-tool-variables.md)
+ [Códigos de erro Amazon Redshift RSQL](rsql-query-tool-error-codes.md)
+ [Variáveis de ambiente do Amazon Redshift RSQL](rsql-query-tool-environment-variables.md)

# Conectar-se com o Amazon Redshift RSQL
<a name="rsql-query-tool"></a>

 O Amazon Redshift RSQL é um cliente de linha de comando para interagir com clusters e bancos de dados do Amazon Redshift. Você pode se conectar a um cluster do Amazon Redshift, descrever objetos de banco de dados, consultar dados e visualizar resultados de consulta em vários formatos de saída. 

 O Amazon Redshift RSQL oferece suporte aos recursos da ferramenta da linha de comando psql PostgreSQL com um conjunto adicional de recursos específicos para o Amazon Redshift. Incluindo o seguinte: 
+ É possível usar a autenticação única utilizando AD FS, PingIdentity, Okta, Azure ADm ou outros provedores de identidades baseados em SAML/JWT. Você também pode usar provedores de identidade SAML baseados em navegador para autenticação multifator (MFA).
+ É possível descrever propriedades ou atributos de objetos do Amazon Redshift, como chaves de distribuição de tabela, chaves de classificação de tabela, visualizações de vinculação tardia (LBVs) e views materializadas. Você também pode descrever propriedades ou atributos de tabelas externas em um catálogo do AWS Glue ou Apache Hive Metastore, bancos de dados externos no Amazon RDS for PostgreSQL, Amazon Aurora edição compatível com PostgreSQL, RDS para MySQL (pré-visualização) e Amazon Aurora edição compatível com MySQL (pré-visualização) e tabelas compartilhadas usando o compartilhamento de dados do Amazon Redshift.
+ Você também pode usar comandos de fluxo de controle aprimorados, como `IF` (`\ELSEIF`, `\ELSE,` `\ENDIF`), `\GOTO` e `\LABEL`.

 Com o modo em lote do Amazon Redshift RSQL, que executa um script passado como um parâmetro de entrada, é póssível executar scripts que contenham SQL e lógica de negócios complexa. Se você tiver data warehouses on-premises autogerenciados, poderá usar o Amazon Redshift RSQL para substituir scripts existentes de extração, transformação, carregamento (ETL) e automação, como scripts Teradata BTEQ. Usar o RSQL ajuda você a evitar a reimplementação manual de scripts em uma linguagem processual. 

 O Amazon Redshift RSQL está disponível para sistemas operacionais Linux, Windows e macOS X. 

Para relatar problemas com o Amazon Redshift RSQL, escreva para redshift-rsql-support@amazon.com.

**Topics**
+ [Conceitos básicos do Amazon Redshift RSQL](rsql-query-tool-getting-started.md)
+ [Log de alterações do Amazon Redshift RSQL](rsql-query-tool-changelog.md)

# Conceitos básicos do Amazon Redshift RSQL
<a name="rsql-query-tool-getting-started"></a>

Instale o Amazon Redshift RSQL em um computador com sistema operacional Linux, macOS ou Microsoft Windows.

## Baixar o RSQL
<a name="rsql-query-tool-download"></a>
+ RPM de 64 bits do Linux: [RSQL versão 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.rhel.x86_64.rpm) 
  + Chave de assinatura de artefato Linux: [chave](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-certificate.pem) 
  + Hash assinado por artefato Linux: [hash](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2-signature.bin) 
+ Mac OS 64 bits PKG: [RSQL Versão 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.universal.pkg) 
+ MSI de 64 bits do Windows: [RSQL versão 1.1.2](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.2/AmazonRedshiftRsql-1.1.2.x86_64.msi) 

Veja o log de alterações e os downloads das versões anteriores em [Log de alterações do Amazon Redshift RSQL](rsql-query-tool-changelog.md).

## Instalar o RSQL para Linux
<a name="rsql-query-tool-linux-install"></a>

Siga as etapas abaixo para instalar o RSQL para Linux.

1. Instale o driver com o seguinte comando:

   ```
   sudo yum install unixODBC
   ```

1. Instale o driver ODBC: [Baixar e instalar o driver ODBC do Amazon RedshiftBaixar e instalar o driver ODBC](odbc20-install-linux.md).

1. Copie o arquivo ini para o diretório inicial:

   ```
   cp /opt/amazon/redshiftodbcx64/odbc.ini ~/.odbc.ini
   ```

1. Defina as variáveis de ambiente para apontar ao local do arquivo:

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshiftodbcx64/
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshiftodbcx64/amazon.redshiftodbc.ini
   ```

1. Agora é possível instalar o RSQL executando o comando a seguir.

   ```
   sudo rpm -i AmazonRedshiftRsql-<version>.rhel.x86_64.rpm
   ```

## Instalar o RSQL para Mac
<a name="rsql-query-tool-mac-install"></a>

Siga as etapas abaixo para instalar o RSQL para Mac OSX.

1. Instale o driver com o seguinte comando:

   ```
   brew install unixodbc --build-from-source
   ```

1. Instale o driver ODBC: [Baixar e instalar o driver ODBC do Amazon RedshiftBaixar e instalar o driver ODBC](odbc-driver-mac-how-to-install.md).

1. Copie o arquivo ini para o diretório inicial:

   ```
   cp /opt/amazon/redshift/Setup/odbc.ini ~/.odbc.ini
   ```

1. Defina as variáveis de ambiente para apontar ao local do arquivo:

   ```
   export ODBCINI=~/.odbc.ini
   export ODBCSYSINI=/opt/amazon/redshift/Setup
   export AMAZONREDSHIFTODBCINI=/opt/amazon/redshift/lib/amazon.redshiftodbc.ini
   ```

1. Defina `DYLD_LIBRARY_PATH` para a localização do seu libodbc.dylib se não estiver em `/usr/local/lib`.

   ```
   export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib
   ```

1. Clique duas vezes no arquivo pkg para executar o instalador.

1. Siga as etapas do instalador para concluir a instalação. Concorde com os termos do contrato de licença.

## Instalar o RSQL para Windows
<a name="rsql-query-tool-windows-install"></a>

Siga as etapas abaixo para instalar o RSQL para Windows.

1. Instale o driver ODBC: [Baixar e instalar o driver ODBC do Amazon RedshiftBaixar e instalar o driver ODBC](odbc-driver-windows-how-to-install.md).

1. Clique duas vezes no arquivo de download do RSQL para executar o instalador e siga as solicitações para concluir a instalação.

# Log de alterações do Amazon Redshift RSQL
<a name="rsql-query-tool-changelog"></a>

*1.1.2 (2025-12-11)*

Correções de bugs
+ Correção de um bug que causava falhas nos comandos\$1 goto e\$1 label.
+ Correção de um bug que impedia o RSQL de imprimir valores de variáveis quando as variáveis estavam entre aspas.
+ Correção de um bug que causava falhas no RSQL quando os resultados da consulta excediam o tamanho do parâmetro ODBC DSN Fetch enquanto UseDeclareFetch era habilitado.
+ Correção de um problema em que várias páginas de resultados eram exibidas ao mesmo tempo, mesmo que o pager era ativado.
+ Correção de um bug que provocava falhas no RSQL quando as consultas falhavam nos blocos de transações.

*1.1.1 (20-11-2025)*

Correções de bugs
+ Correção de um problema em que o RSQL analisava consultas incorretamente ao usar o sinalizador -c. Essa correção se aplica a todas as plataformas.
+ Corrija um bug no Mac que impedia os usuários de usar o comando \$1s no RSQL.

*1.1.0 (2025-11-11)*

Correções de bugs
+ Solução de um problema de vazamento de memória que estava causando falhas inesperadas no rSQL.
+ Remoção da dependência do OpenSSL do RSQL.
+ Correção de conflitos de vinculação com instalações libpq/psql no mesmo ambiente.
+ Melhoria da compatibilidade de plataforma para Amazon Linux 2023, Windows e macOS.
+ Correção de um problema em que a saída era truncada ao exceder o tamanho de exibição atual.

*1.0.8 (2023-06-19)*

Correções de bugs
+ Corrigido um problema em que a saída era truncada com os comandos SHOW.
+ Adicionado suporte a \$1de para descrever fluxos externos do Kinesis e tópicos do Kafka.

*1.0.7 (22/03/2023)*

Correções de bugs
+ Correção de um problema em que o RSQL não conseguia descrever visões materializadas.
+ Correção do erro de permissão negada em stl\$1connection\$1log ao usar o Amazon Redshift sem servidor.
+ Correção de um problema em que o RSQL processava rótulos \$1GOTO incorretamente.
+ Correção de um problema em que mensagens SSL eram impressas no modo silencioso.
+ Correção de um problema de exibição de caracteres aleatórios ao descrever procedimentos armazenados.
+ Correção de um problema de impressão de mensagens ERROR/INFO duplicadas.

Novo
+ O RSQL agora recebe informações de SSL diretamente do driver ODBC.



*1.0.6 (21/02/2023)*

Correções de bugs
+ Correção de um problema em que \$1d gerava um erro (sintaxe de entrada inválida para inteiro: “xid”) no patch 1.0.46086 (P173) do Redshift.

Novo
+ Renomeação dos arquivos de instalação para refletir a arquitetura compatível.



*1.0.5 (2022-06-27)*

Correções de bugs
+ Envia mensagens de erro SQL para erro padrão (stderr).
+ Corrigido o problema com os códigos de saída ao usar ON\$1ERROR\$1STOP. Os scripts agora terminam depois de encontrar um erro e retornam os códigos de saída corretos.
+ Maxerror agora não diferencia maiúsculas de minúsculas.

Novo
+ Inclusão de suporte ao driver ODBC 2.x.



*1.0.4 (19-03-2022)*
+ Adicione suporte para a variável de ambiente RSPASSWORD. Defina uma senha para se conectar ao Amazon Redshift. Por exemplo, `export RSPASSWORD=TestPassw0rd`.



*1.0.3 (2021-12-08)*

Correções de bugs
+ Caixa de diálogo pop-up corrigida ao usar `\c` ou `\logon` para alternar entre bancos de dados no sistema operacional Windows.
+ Corrigida a falha ao verificar informações ssl.



## Versões anteriores do Amazon Redshift RSQL
<a name="rsql-query-tool-changelog-legacy-versions"></a>

Escolha um dos links para baixar a versão do Amazon Redshift RSQL de que você precisa, com base em seu sistema operacional.

**RPM de 64 bits do Linux**
+ [RSQL versão 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.rhel.x86_64.rpm)
+ [RSQL versão 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.rhel.x86_64.rpm)
+ [RSQL versão 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.rpm)
+ [RSQL versão 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.rpm)
+ [RSQL versão 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.rpm)
+ [RSQL versão 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5-1.x86_64.rpm)
+ [RSQL versão 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4-1.x86_64.rpm)
+ [RSQL versão 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3-1.x86_64.rpm)
+ [RSQL versão 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1-1.x86_64.rpm)

**Mac OS 64 bits DMG/PKG**
+ [RSQL versão 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.universal.pkg)
+ [RSQL versão 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.universal.pkg)
+ [RSQL versão 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.dmg)
+ [RSQL versão 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.dmg)
+ [RSQL versão 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.dmg)
+ [RSQL versão 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.dmg)
+ [RSQL versão 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.dmg)
+ [RSQL versão 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.dmg)
+ [RSQL versão 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.dmg)

**MSI de 64 bits do Windows**
+ [RSQL versão 1.1.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.1/AmazonRedshiftRsql-1.1.1.x86_64.msi)
+ [RSQL versão 1.1.0](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.1.0/AmazonRedshiftRsql-1.1.0.x86_64.msi)
+ [RSQL versão 1.0.8](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.8/AmazonRedshiftRsql-1.0.8.x86_64.msi)
+ [RSQL versão 1.0.7](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.7/AmazonRedshiftRsql-1.0.7.x86_64.msi)
+ [RSQL versão 1.0.6](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.6/AmazonRedshiftRsql-1.0.6.x86_64.msi)
+ [RSQL versão 1.0.5](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.5/AmazonRedshiftRsql-1.0.5.msi)
+ [RSQL versão 1.0.4](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.4/AmazonRedshiftRsql-1.0.4.msi)
+ [RSQL versão 1.0.3](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.3/AmazonRedshiftRsql-1.0.3.msi)
+ [RSQL versão 1.0.1](https://s3.amazonaws.com/redshift-downloads/amazon-redshift-rsql/1.0.1/AmazonRedshiftRsql-1.0.1.msi)

# Conectar-se a um cluster com o Amazon Redshift RSQL
<a name="rsql-query-tool-starting-tool-connection"></a>

Com o Amazon Redshift, você pode se conectar e interagir com um cluster usando o RSQL. Essa é uma ferramenta de linha de comandos que oferece uma forma segura para consultar dados, criar objetos de banco de dados e gerenciar clusters do Amazon Redshift. As seções a seguir orientam você pelas etapas para estabelecer uma conexão com seu cluster usando o RSQL com e sem um nome de fonte de dados (DSN).

## Conectar-se sem um DSN
<a name="rsql-query-tool-starting-tool-connection-dsn-less-example"></a>

1. No console do Amazon Redshift, escolha o cluster ao qual você deseja se conectar e anote o endpoint, o banco de dados e a porta.

1. No prompt de comando, especifique as informações de conexão usando os parâmetros de linha de comando.

   ```
   rsql -h <endpoint> -U <username> -d <databasename> -p <port>
   ```

    Aqui, o seguinte se aplica: 
   +  *<endpoint>* é o **Endpoint** que você registrou na etapa anterior.
   +  *<username>* é o nome do usuário com as permissões para a conexão com o cluster.
   +  *<databasename>* é o **Nome do banco de dados** que você registrou na etapa anterior.
   +  *<port>* é a **porta** que você registrou na etapa anterior. *<port>* é um parâmetro opcional.

   Veja a seguir um exemplo.

   ```
   rsql -h testcluster.example.amazonaws.com -U user1 -d dev -p 5439
   ```

1.  No prompt da senha, digite a senha do usuário *<username>*.

   Uma resposta de conexão bem-sucedida tem a aparência a seguir.

   ```
   % rsql -h testcluster.example.com -d dev -U user1 -p 5349
   Password for user user1:
   DSN-less Connected
   DBMS Name: Amazon Redshift
   Driver Name: Amazon Redshift ODBC Driver
   Driver Version: 1.4.27.1000
   Rsql Version: 1.0.1
   Redshift Version: 1.0.29306
   Type "help" for help.
   
   (testcluster) user1@dev=#
   ```

O comando para conectar tem os mesmos parâmetros no Linux, Mac OS e Windows.

## Conectar-se com um DSN
<a name="rsql-query-tool-starting-tool-connection-dsn-example"></a>

É possível conectar o RSQL ao Amazon Redshift usando um DSN para simplificar a organização das propriedades de conexão. Este tópico inclui instruções para instalação do driver ODBC e descrições das propriedades do DSN.

### Usar uma conexão DSN com uma senha
<a name="rsql-query-tool-starting-tool-connection-dsn-example-password"></a>

Veja a seguir um exemplo de uma configuração de conexão DSN que usa uma senha. O padrão `<path to driver>` para Mac OSX é `/opt/amazon/redshift/lib/libamazonredshiftodbc.dylib` e para Linux é `/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so`.

```
[testuser]
Driver=/opt/amazon/redshiftodbc/lib/64/libamazonredshiftodbc64.so
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<database port>
Database=<dbname>
UID=<username>
PWD=<password>
sslmode=prefer
```

A saída a seguir é resultado de uma conexão bem-sucedida.

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

(testcluster) user1@dev=#
```

### Usar o DSN de autenticação única
<a name="rsql-query-tool-starting-tool-connection-dsn"></a>

Você pode configurar um DSN para autenticação única. Veja a seguir um exemplo de configuração de conexão DSN que usa autenticação única do Okta.

```
[testokta]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-US
iam=1
plugin_name=<plugin name>
uid=<okta username>
pwd=<okta password>
idp_host=<idp endpoint>
app_id=<app id>
app_name=<app name>
preferred_role=<role arn>
```

Exemplo de saída de uma conexão bem-sucedida.

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

(testcluster) user1@dev=#
```

Veja a seguir o exemplo de uma configuração de conexão DSN que usa autenticação única do Azure.

```
[testazure]
Driver=<path to driver>
SSLMode=verify-ca
Min_TLS=1.2
boolsaschar=0
Host=<server endpoint>
Port=<cluster port>
clusterid=<cluster id>
region=<region name>
Database=<dbname>
locale=en-us
iam=1
plugin_name=<plugin name>
uid=<azure username>
pwd=<azure password>
idp_tenant=<Azure idp tenant uuid>
client_id=<Azure idp client uuid>
client_secret=<Azure idp client secret>
```

### Usar uma conexão DSN com um perfil do IAM
<a name="rsql-query-tool-starting-tool-connection-dsn-iam"></a>

Você pode se conectar ao Amazon Redshift usando seu perfil do IAM configurado. O perfil do IAM deve ter privilégios para chamar `GetClusterCredentials`. O exemplo a seguir mostra as propriedades DSN a serem usadas. Os parâmetros `ClusterID` e `Region` são obrigatórios somente se o `Host` não for um endpoint fornecido pela Amazon, como `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`.

```
[testiam]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Profile=default
```

O valor da chave `Profile` é o perfil nomeado que você escolhe a partir de suas credenciais AWS da CLI. Esse exemplo mostra as credenciais do perfil chamado `default`.

```
$ cat .aws/credentials
[default]
aws_access_key_id = ASIAIOSFODNN7EXAMPLE 
aws_secret_access_key = wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
```

Veja a seguir a resposta da conexão.

```
$ rsql -D testiam
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### Usar uma conexão DSN com um perfil da instância
<a name="rsql-query-tool-starting-tool-connection-dsn-instance"></a>

Você pode se conectar ao Amazon Redshift usando seu perfil de instância do Amazon EC2. O perfil da instância deve ter privilégios para chamar `GetClusterCredentials`. Veja o exemplo abaixo para saber quais propriedades DSN serão usadas. Os parâmetros `ClusterID` e `Region` são obrigatórios somente se o `Host` não for um endpoint fornecido pela Amazon, como `examplecluster.abc123xyz789.us-west-2.redshift.amazonaws.com`.

```
[testinstanceprofile]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
Instanceprofile=1
```

Veja a seguir a resposta da conexão.

```
$ rsql -D testinstanceprofile
DSN Connected
DBMS Name: Amazon Redshift
Driver Name: Amazon Redshift ODBC Driver
Driver Version: 1.4.27.1000
Rsql Version: 1.0.1
Redshift Version: 1.0.29306
Type "help" for help.

(testcluster) testuser@dev=>
```

### Uso de uma conexão DSN com a cadeia de fornecedores de credenciais padrão
<a name="rsql-query-tool-starting-tool-connection-dsn-provider-chain"></a>

Para se conectar usando a cadeia de provedores de credenciais padrão, especifique apenas a propriedade do IAM, e o Amazon Redshift RSQL tentará adquirir credenciais na ordem descrita em [Trabalho com credenciais da AWS](https://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html) no SDK da AWS para Java. Pelo menos um dos provedores da cadeia deve ter a permissão `GetClusterCredentials`. Isso é útil para se conectar a partir de contêineres ECS, por exemplo.

```
[iamcredentials]
Driver=Default
Host=testcluster.example.com
Database=dev
DbUser=testuser
ClusterID=rsqltestcluster
Region=us-east-1
IAM=1
```

# 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.

# Variáveis do Amazon Redshift RSQL
<a name="rsql-query-tool-variables"></a>

 Algumas palavras-chave funcionam como variáveis no RSQL. Você pode definir cada uma delas para um valor específico ou redefinir o valor. A maioria está definida com `\rset`, que tem um modo interativo e um modo em lote. Os comandos podem ser definidos em minúsculas ou maiúsculas.

## ACTIVITYCOUNT
<a name="rsql-query-tool-activitycount"></a>

 Indica o número de linhas afetadas pela última solicitação enviada. Para uma solicitação de retorno de dados, esse é o número de linhas retornadas ao RSQL do banco de dados. O valor é 0 ou um inteiro positivo. O valor máximo é 18.446.744.073.709.551.615. 

 A variável especialmente tratada `ACTIVITYCOUNT` é semelhante à variável `ROW_COUNT`. Porém, `ROW_COUNT` não informa à aplicação cliente a quantidade de linhas afetadas na conclusão do comando para `SELECT`, `COPY` ou `UNLOAD`. Mas `ACTIVITYCOUNT` o faz. 

activitycount\$101.sql:

```
select viewname, schemaname
from pg_views
where schemaname = 'not_existing_schema';
\if :ACTIVITYCOUNT = 0
\remark 'views do not exist'
\endif
```

Resultado no console:

```
viewname | schemaname
----------+------------
(0 rows)

views do not exist
```

## ERRORLEVEL
<a name="rsql-query-tool-describe-rset-errorlevel"></a>

Atribui aos erros níveis de gravidade. Use os níveis de gravidade para determinar um curso de ação. Se o comando `ERRORLEVEL` não foi usado, seu valor é `ON` por padrão.

errorlevel\$101.sql:

```
\rset errorlevel 42P01 severity 0

select * from tbl;

select 1 as col;

\echo exit
\quit
```

Resultado no console:

```
Errorlevel is on.
rsql: ERROR: relation "tbl" does not exist
(1 row)

col
1

exit
```

## HEADING e RTITLE
<a name="rsql-query-tool-describe-rset-heading-rtitle"></a>

Permite que os usuários especifiquem um cabeçalho que aparece no início de um relatório. O cabeçalho especificado pelo comando `RSET RTITLE` inclui automaticamente a data atual do sistema do computador cliente.

Conteúdo de rset\$1heading\$1rtitle\$102.rsql:

```
\remark Starting...
\rset rtitle "Marketing Department||Confidential//Third Quarter//Chicago"
\rset width 70
\rset rformat on
select * from rsql_test.tbl_currency order by id limit 2;
\exit
\remark Finishing...
```

Resultado no console:

```
Starting...
Rtitle is set to: &DATE||Marketing Department||Confidential//Third Quarter//Chicago (Changes will take effect after RFORMAT is
switched ON)
Target width is 70.
Rformat is on.
09/11/20       Marketing       Department Confidential
                  Third Quarter
                     Chicago
id  | bankid  | name |      start_date
100 |       1 | USD | 2020-09-11 10:51:39.106905
110 |       1 | EUR | 2020-09-11 10:51:39.106905
(2 rows)

Press any key to continue . . .
```

## MAXERROR
<a name="rsql-query-tool-describe-rset-maxerror"></a>

designa um nível máximo de gravidade de erro além do qual o RSQL termina o processamento do trabalho. Os códigos de retorno são valores inteiros que o RSQL retorna ao sistema operacional cliente após a conclusão de cada trabalho ou tarefa. O valor do código de retorno indica o status de conclusão do trabalho ou tarefa. Se um script contiver uma instrução que produza um nível de gravidade de erro maior que o valor `maxerror` designado, o RSQL sai imediatamente. Portanto, para que o RSQL saia em um nível de gravidade de erro 8, use `RSET MAXERROR 7`.

Conteúdo de maxerror\$101.sql:

```
\rset maxerror 0
                        
select 1 as col;

\quit
```

Resultado no console:

```
Maxerror is default.
(1 row)

col
1
```

## RFORMAT
<a name="rsql-query-tool-describe-rset-heading-rformat"></a>

Permite que os usuários especifiquem se as configurações serão aplicadas para os comandos de formatação.

Conteúdo rset\$1rformat.rsql:

```
\remark Starting...
\pset border 2
\pset format wrapped
\pset expanded on
\pset title 'Great Title'
select * from rsql_test.tbl_long where id = 500;
\rset rformat
select * from rsql_test.tbl_long where id = 500;
\rset rformat off
select * from rsql_test.tbl_long where id = 500;
\rset rformat on
select * from rsql_test.tbl_long where id = 500;
\exit
\remark Finishing...
```

Resultado no console:

```
Starting...
Border style is 2. (Changes will take effect after RFORMAT is switched ON)
Output format is wrapped. (Changes will take effect after RFORMAT is switched ON)
Expanded display is on. (Changes will take effect after RFORMAT is switched ON)
Title is "Great Title". (Changes will take effect after RFORMAT is switched ON)
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular
format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+

Rformat is off.
id  |                                                             long_string
500 | In general, the higher the number the more borders and lines the tables will have, but details depend on the particular format.
(1 row)

Rformat is on.
Great Title
+-[ RECORD 1 ]+----------------------------------------------------------------------------------------------------------------------
-----------+
| id           | 500
|
| long_string | In general, the higher the number the more borders and lines the tables will have, but details depend on the
particular format. |
+-------------+----------------------------------------------------------------------------------------------------------------------
-----------+
Press any key to continue . . .
```

## ROW\$1COUNT
<a name="rsql-query-tool-describe-rset-row_count"></a>

Obtém o número de registros afetados pela consulta anterior. Geralmente é usado para conferir um resultado, como no seguinte fragmento de código:

```
SET result = ROW_COUNT;

IF result = 0
...
```

## TITLEDASHES
<a name="rsql-query-tool-describe-rset-heading-titledashes"></a>

Esse controle permite que os usuários especifiquem se uma linha de caracteres de traço deve ser impressa acima dos dados de colunas retornados para instruções SQL.

Exemplo:

```
\rset titledashes on
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
\rset titledashes off
select dept_no, emp_no, salary from rsql_test.EMPLOYEE
where dept_no = 100;
```

Resultado no console:

```
dept_no      emp_no          salary
----------- ----------- --------------------
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00

dept_no     emp_no         salary
100         1000346        1300.00
100         1000245        5000.00
100         1000262        2450.00
```

## WIDTH
<a name="rsql-query-tool-describe-rset-heading-width"></a>

Define o formato de saída como empacotado e especifica a largura de destino para cada linha em um relatório. Sem um parâmetro, ele retorna as configurações atuais para o formato e a largura do destino.

Conteúdo rset\$1width\$101.rsql:

```
\echo Starting...
\rset width
\rset width 50
\rset width
\quit
\echo Finishing...
```

Resultado no console:

```
Starting...
Target width is 75.
Target width is 50.
Target width is 50.
Press any key to continue . . .
```

Exemplo com parâmetro:

```
\echo Starting...
\rset rformat on
\pset format wrapped
select * from rsql_test.tbl_long where id = 500;
\rset width 50
select * from rsql_test.tbl_long where id = 500;
\quit
\echo Finishing...
```

Resultado no console:

```
Starting...
Rformat is on.
Output format is wrapped.
id  |                                          long_string
500 | In general, the higher the number the more borders and lines the ta.
    |.bles will have, but details depend on the particular format.
(1 row)

Target width is 50.
id  |                                          long_string
500 | In general, the higher the number the more.
    |. borders and lines the tables will have, b.
    |.ut details depend on the particular format.
    |..
(1 row)
Press any key to continue . . .
```

# Códigos de erro Amazon Redshift RSQL
<a name="rsql-query-tool-error-codes"></a>

Mensagens de sucesso, avisos e exceções:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

Exceções de dados:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

Violações de restrição de integridade:

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/redshift/latest/mgmt/rsql-query-tool-error-codes.html)

# Variáveis de ambiente do Amazon Redshift RSQL
<a name="rsql-query-tool-environment-variables"></a>

 O Amazon Redshift RSQL pode usar variáveis de ambiente para selecionar valores de parâmetros padrão. 

## RSPASSWORD
<a name="rsql-query-tool-rspassword"></a>

**Importante**  
Não recomendamos usar essa variável de ambiente por motivos de segurança, pois alguns sistemas operacionais permitem que usuários não administrativos vejam variáveis de ambiente de processo.

 Define a senha do Amazon Redshift RSQL para usar na conexão com o Amazon Redshift. Essa variável de ambiente requer o Amazon Redshift RSQL 1.0.4 ou posterior. 

 O RSQL prioriza o RSPASSWORD caso esteja definido. Se o RSPASSWORD não estiver definido e você estiver se conectando usando um DSN, o RSQL usará a senha dos parâmetros do arquivo DSN. Por fim, se o RSPASSWORD não estiver definido e você não estiver usando um DSN, o RSQL exibirá uma solicitação de senha depois de tentar se conectar. 

Veja a seguir um exemplo de como definir um RSPASSWORD:

```
export RSPASSWORD=TestPassw0rd
```