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

STL_DDLTEXT

Capture les DDL instructions suivantes qui ont été exécutées sur le système.

Ces DDL instructions incluent les requêtes et les objets suivants :

  • CREATE SCHEMA, TABLE, VIEW

  • DROP SCHEMA, TABLE, VIEW

  • ALTER SCHEMA, TABLE

Consultez aussi STL_QUERYTEXT, STL_UTILITYTEXT et SVL_STATEMENTTEXT. Ces vues fournissent une chronologie des SQL commandes exécutées sur le système ; cet historique est utile pour le dépannage et pour créer une piste d'audit de toutes les activités du système.

Utilisez les ENDTIME colonnes STARTTIME et pour savoir quelles déclarations ont été enregistrées au cours d'une période donnée. Les longs blocs de SQL texte sont divisés en lignes de 200 caractères ; la SEQUENCE colonne identifie les fragments de texte appartenant à une seule instruction.

STL_ DDLTEXT est visible par tous les utilisateurs. Les super-utilisateurs peuvent voir toutes les lignes, tandis que les utilisateurs standard peuvent voir uniquement leurs propres données. Pour de plus amples informations, veuillez consulter Visibilité des données dans les tables et vues système.

Certaines ou toutes les données de ce tableau se trouvent également dans la vue SYS de surveillanceSYS_QUERY_HISTORY. Les données de la vue SYS de surveillance sont formatées pour être plus faciles à utiliser et à comprendre. Nous vous recommandons d'utiliser la vue SYS de surveillance pour vos requêtes.

Colonnes de la table

Nom de la colonne Type de données Description
userid entier ID de l’utilisateur qui a généré l’entrée.
xid bigint ID de transaction associé à l’instruction.
pid entier ID de processus associé à l’instruction.
étiquette caractère (320) Soit le nom du fichier utilisé pour exécuter la requête, soit une étiquette définie par une GROUP commande SET QUERY _. Si la requête n'est pas basée sur un fichier ou si le GROUP paramètre QUERY _ n'est pas défini, ce champ est vide.
starttime timestamp Heure à UTC laquelle la requête a commencé. Le temps total inclut la mise en file d'attente et l'exécution avec 6 chiffres de précision pour les fractions de secondes. olpPar exemple : 2009-06-12 11:29:19.131358.
endtime timestamp Heure à UTC laquelle la requête s'est terminée. Le temps total inclut la mise en file d'attente et l'exécution avec 6 chiffres de précision pour les fractions de secondes. olpPar exemple : 2009-06-12 11:29:19.131358.
sequence entier Lorsqu’une seule instruction contient plus de 200 caractères, des lignes supplémentaires sont enregistrées pour l’instruction. Sequence 0 correspond à la première ligne, 1 à la deuxième, et ainsi de suite.
text character(200) SQLtexte, par incréments de 200 caractères. Ce champ peut contenir des caractères spéciaux tels qu’une barre oblique inverse (\\) et un caractère de saut de ligne (\n).

Exemples de requêtes

La requête suivante renvoie des enregistrements qui incluent des DDL instructions exécutées précédemment.

select xid, starttime, sequence, substring(text,1,40) as text from stl_ddltext order by xid desc, sequence;

Voici un exemple de sortie qui montre quatre CREATE TABLE instructions. Les DDL instructions apparaissent dans la text colonne, qui est tronquée pour des raisons de lisibilité.

xid | starttime | sequence | text ------+----------------------------+----------+------------------------------------------ 1806 | 2013-10-23 00:11:14.709851 | 0 | CREATE TABLE supplier ( s_suppkey int4 N 1806 | 2013-10-23 00:11:14.709851 | 1 | s_comment varchar(101) NOT NULL ) 1805 | 2013-10-23 00:11:14.496153 | 0 | CREATE TABLE region ( r_regionkey int4 N 1804 | 2013-10-23 00:11:14.285986 | 0 | CREATE TABLE partsupp ( ps_partkey int8 1803 | 2013-10-23 00:11:14.056901 | 0 | CREATE TABLE part ( p_partkey int8 NOT N 1803 | 2013-10-23 00:11:14.056901 | 1 | ner char(10) NOT NULL , p_retailprice nu (6 rows)

Reconstruction d'un magasin SQL

La SQL liste suivante répertorie les lignes stockées dans la text colonne STL _DDLTEXT. Les lignes sont classées par xid et sequence. Si l'original SQL comportait plus de 200 caractères sur plusieurs lignes, STL _ DDLTEXT peut contenir plusieurs lignes parsequence.

SELECT xid, sequence, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') WITHIN GROUP (ORDER BY sequence) as query_statement FROM stl_ddltext GROUP BY xid, sequence ORDER BY xid, sequence;
xid | sequence | query_statement --------+-----------+----------------- 7886671 0 create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists; 7886752 0 CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n le 7886752 1 ague_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's 7886752 2 3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1'); ...

Pour reconstruire le contenu SQL stocké dans la text colonne de STL _DDLTEXT, exécutez l'SQLinstruction suivante. Il regroupe les DDL déclarations d'un ou de plusieurs segments de la text colonne. Avant d'exécuter la reconstructionSQL, remplacez tous les caractères spéciaux (\n) par une nouvelle ligne dans votre SQL client. Les résultats de l'SELECTinstruction suivante rassemblent trois lignes dans l'ordre séquentiel pour reconstituer leSQL, dans le query_statement champ.

SELECT LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement FROM stl_ddltext GROUP BY xid, endtime order by xid, endtime;
query_statement -------------- create external schema schema_spectrum_uddh\nfrom data catalog\ndatabase 'spectrum_db_uddh'\niam_role ''\ncreate external database if not exists; CREATE EXTERNAL TABLE schema_spectrum_uddh.soccer_league\n(\n league_rank smallint,\n prev_rank smallint,\n club_name varchar(15),\n league_name varchar(20),\n league_off decimal(6,2),\n league_def decimal(6,2),\n league_spi decimal(6,2),\n league_nspi smallint\n)\nROW FORMAT DELIMITED \n FIELDS TERMINATED BY ',' \n LINES TERMINATED BY '\\n\\l'\nstored as textfile\nLOCATION 's3://mybucket-spectrum-uddh/'\ntable properties ('skip.header.line.count'='1');