Méta-commandes Amazon Redshift RSQL - Amazon Redshift

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Méta-commandes Amazon Redshift RSQL

Les méta-commandes Amazon Redshift RSQL renvoient des enregistrements informatifs sur des bases de données ou des objets de base de données spécifiques. Les résultats peuvent inclure diverses colonnes et métadonnées. D’autres commandes effectuent des actions spécifiques. Ces commandes sont précédées d’une barre oblique inverse.

\d[S+]

Répertorie les tables créées par les utilisateurs locaux, les vues régulières, les vues à liaison tardive et les vues matérialisées. \dS répertorie également les tableaux et les vues, comme \d, mais les objets système sont inclus dans les enregistrements renvoyés. Le + a pour résultat la colonne de métadonnées supplémentaires description pour tous les objets répertoriés. Les exemples d’enregistrements suivants sont renvoyés à la suite de la commande.

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)

\d[S+] NAME

Décrit une table, une vue ou un index. Inclut les noms et les types de colonnes. Il fournit également le style de distribution diststyle, la configuration de sauvegarde, la date de création (tables créées après octobre 2018) et les contraintes. Par exemple, \dS+ sample renvoie les propriétés d’objet. L’ajout de S+ donne lieu à l’inclusion de colonnes supplémentaires dans les enregistrements renvoyés.

Table "public.sample" Column | Type | Collation | Nullable | Default Value | Encoding | DistKey | SortKey --------+-----------------------------+----------------+----------+---------------+-----------+---------+--------- col1 | smallint | | NO | | none | t | 1 col2 | character(100) | case_sensitive | YES | | none | f | 2 col3 | character varying(100) | case_sensitive | YES | | text32k | f | 3 col4 | timestamp without time zone | | YES | | runlength | f | 0 col5 | super | | YES | | zstd | f | 0 col6 | bigint | | YES | | az64 | f | 0 Diststyle: KEY Backup: YES Created: 2021-07-20 19:47:27.997045 Unique Constraints: "sample_pkey" PRIMARY KEY (col1) "sample_col2_key" UNIQUE (col2) Foreign-key constraints: "sample_col2_fkey" FOREIGN KEY (col2) REFERENCES lineitem(l_orderkey)

Le style de distribution, ou Diststyle, de la table peut être KEY, AUTO, EVEN ou ALL.

Backup (Sauvegarde) indique si la table est sauvegardée lors de la prise d’un instantané. Les valeurs valides sont YES ou NO.

Created (Créé) est l’horodatage de la date de création de la table. La date de création n’est pas disponible pour les tables Amazon Redshift créées avant novembre 2018. Les tables créées avant cette date affichent n/a (Non applicable).

Unique Constraints (Contraintes uniques) répertorie les contraintes uniques et les contraintes de clé principale sur la table.

Foreign-key constraints (Contraintes de clé étrangère) répertorie les contraintes de clé étrangère sur la table.

\dC[+] [PATTERN]

Répertorie les distributions. Inclut le type de source, le type de cible et indique si la distribution est implicite.

Les données suivantes présentent un sous-ensemble de résultats provenant 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 |

\dd[S] [PATTERN]

Affiche les descriptions d’objets non affichées ailleurs.

\de

Répertorie les tables externes. Cela inclut les tables du catalogue de AWS Glue données, Hive Metastore et les tables fédérées des tables de partage de données Amazon RDS/Aurora MySQL, Amazon RDS/Aurora PostgreSQL et Amazon Redshift.

\de NAME

Décrit une table externe.

L'exemple suivant montre une table AWS Glue externe.

# \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"}

Une table 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"}

Table externe 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 |

\df[anptw][S+] [PATTERN]

Répertorie les fonctions de différents types. La commande \df, par exemple, renvoie une liste de fonctions. Les résultats incluent des propriétés telles que le nom, le type de données renvoyé, les privilèges d’accès et les métadonnées supplémentaires. Les types de fonctions peuvent inclure des déclencheurs, des procédures stockées, des fonctions de fenêtrage et d’autres types. Lorsque vous ajoutez S+ à la commande, par exemple \dfantS+, des colonnes de métadonnées supplémentaires sont incluses, telles que owner, security et access privileges.

\dL[S+] [PATTERN]

Répertorie les données sur les langages procéduraux associés à la base de données. Les informations incluent le nom, tel que plpgsql, et des métadonnées supplémentaires, qui indiquent s’il est approuvé, les privilèges d’accès et la description. L’exemple d’appel est, par exemple, \dLS+, qui répertorie les langues et leurs propriétés. Lorsque vous ajoutez S+ à la commande, des colonnes de métadonnées supplémentaires sont incluses, telles que call handler et access privileges.

Exemple de résultats :

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

\dm[S+] [PATTERN]

Répertorie les vues matérialisées. Par exemple, \dmS+ répertorie les vues matérialisées et leurs propriétés. Lorsque vous ajoutez S+ à la commande, des colonnes de métadonnées supplémentaires sont incluses.

\dn[S+] [PATTERN]

Répertorie les schémas. Lorsque vous ajoutez S+ à la commande, par exemple \dnS+, des colonnes de métadonnées supplémentaires sont incluses, telles que description et access privileges.

\dp [PATTERN]

Répertorie les privilèges d’accès aux tables, aux vues et aux séquences.

\dt[S+] [PATTERN]

Répertorie les tables. Lorsque vous ajoutez S+ à la commande, par exemple \dtS+, des colonnes de métadonnées supplémentaires sont incluses, telles que description dans ce cas.

\du

Répertorie les utilisateurs pour la base de données. Inclut leur nom et leurs rôles, tels que super-utilisateur, ainsi que leurs attributs.

\dv[S+] [PATTERN]

Répertorie les vues. Inclut le schéma, le type et les données de propriétaire. Lorsque vous ajoutez S+ à la commande, par exemple \dvS+, des colonnes de métadonnées supplémentaires sont incluses.

\H

Active la sortie HTML. Cela est utile pour renvoyer rapidement des résultats formatés. Par exemple, select * from sales; \H renvoie les résultats de la table des ventes, au format HTML. Pour revenir aux résultats tabulaires, utilisez \q ou silencieux.

\i

Exécute des commandes à partir d’un fichier. Par exemple, supposons que vous avez rsql_steps.sql dans votre répertoire de travail, les commandes suivantes exécutent les commandes dans le fichier  :\i rsql_steps.sql.

\l[+] [PATTERN]

Répertorie les bases de données. Inclut le propriétaire, l’encodage et des informations supplémentaires.

\q

La commande de fermeture, ou \q, déconnecte les séances de base de données et ferme RSQL.

\sv[+] VIEWNAME

Affiche la définition d’une vue.

\timing

Affiche le délai d’exécution, pour une requête, par exemple.

\z [PATTERN]

Le même résultat que \dp.

\?

Affiche les informations d’aide. Le paramètre facultatif indique l’élément à expliquer.

\EXIT

Déconnecte toutes les séances de base de données et ferme Amazon Redshift RSQL. En outre, vous pouvez spécifier un code de sortie facultatif. Par exemple, \EXIT 15 va fermer le terminal RSQL Amazon Redshift et renvoyer le code de sortie 15.

L’exemple suivant montre le résultat d’une connexion et la fermeture 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

\EXPORT

Spécifie le nom d’un fichier d’exportation utilisé par RSQL pour stocker les informations de base de données renvoyées par une instruction SQL SELECT ultérieure.

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

Sortie de console

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

\LOGON

Se connecte à une base de données. Vous pouvez spécifier des paramètres de connexion à l’aide de la syntaxe positionnelle ou d’une chaîne de connexion.

La syntaxe de commande est la suivante : \logon {[DBNAME|- USERNAME|- HOST|- PORT|- [PASSWORD]] | conninfo}

Le DBNAME est le nom de base de données à laquelle se connecter. Le USERNAME est le nom d’utilisateur utilisé pour se connecter. L’HOST par défaut est localhost. L’PORT par défaut est 5439.

Lorsqu’un nom d’hôte est spécifié dans une commande \LOGON, il devient le nom d’hôte par défaut pour d’autres commandes \LOGON. Pour modifier le nom d’hôte par défaut, spécifiez un nouveau HOST dans une autre commande \LOGON.

L’exemple de résultat de la commande \LOGON pour user1 suit.

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

Exemple de résultat pour 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=#

\REMARK

Une extension de la commande \echo. \REMARK imprime la chaîne spécifiée dans le flux de sortie. \REMARK étend \echoen ajoutant la possibilité de répartir le résultat sur des lignes distinctes.

L’exemple suivant montre le résultat de la commande.

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

\RSET

La commande \rset définit les paramètres de commande et les variables. \rset dispose à la fois d’un mode interactif et d’un mode de traitement par lots. Elle ne prend pas en charge les options en tant qu’options bash, comme -x, ou des arguments, par exemple --<arg>.

Elle définit des variables, telles que les suivantes :

  • ERRORLEVEL

  • HEADING et RTITLE

  • RFORMAT

  • MAXERROR

  • TITLEDASHES

  • WIDTH

L’exemple suivant spécifie un en-tête.

\rset heading "Winter Sales Report"

Pour obtenir plus d’exemples d’utilisation \rset, vous pouvez en trouver plusieurs dans les rubriques Variables Amazon Redshift RSQL.

\RUN

Exécute le script Amazon Redshift RSQL contenu dans le fichier spécifié. \RUN étend la commande \i en ajoutant une option permettant d’ignorer les lignes d’en-tête dans un fichier.

Si le nom du fichier contient une virgule, un point-virgule ou un espace, placez-le entre guillemets simples. De plus, si le texte suit le nom du fichier, placez-le entre guillemets. Sous UNIX, les noms de fichier sont sensibles à la casse. Sous Windows, les noms de fichiers ne sont pas sensibles à la casse.

L’exemple suivant montre le résultat de la commande.

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

\OS

Un alias pour la commande \!. \OS exécute la commande du système d’exploitation transmise en tant que paramètre. Le contrôle revient à Amazon Redshift RSQL une fois la commande exécutée. Par exemple, vous pouvez exécuter la commande suivante pour imprimer la date et l’heure du système actuel et revenir au terminal RSQL : \os date.

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

\GOTO

Une nouvelle commande pour Amazon Redshift RSQL. \GOTO ignore toutes les commandes intervenantes et reprend le traitement à l’\LABEL spécifiée. L’\LABEL doit être une référence future. Vous ne pouvez pas accéder à une\LABEL qui précède le \GOTO d’un point de vue lexical.

Voici un exemple de résultat.

(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

\LABEL

Une nouvelle commande pour Amazon Redshift RSQL. \LABEL établit un point d’entrée pour exécuter le programme, en tant que cible pour une commande \GOTO.

L’exemple suivant montre un exemple de résultat de la commande.

(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

\IF (\ELSEIF, \ELSE, \ENDIF)

Les commandes \IFet associées exécutent conditionnellement des parties du script d’entrée. Une extension de la commande PSQL \if (\elif, \else, \endif). \IF et \ELSEIF prennent en charge les expressions booléennes, dont les conditions AND, OR et NOT.

L’exemple suivant montre un exemple de résultat des commandes.

(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

Utilisez ERRORCODE dans votre logique de branchement.

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

Utilisez\GOTO dans un bloc \IF pour contrôler la façon dont le code est exécuté.