STL_DDLTEXT - Amazon Redshift

STL_DDLTEXT

システムで実行された以下の DDL ステートメントを取得します。

これらの DDL ステートメントには、以下のクエリとオブジェクトが含まれます。

  • CREATE SCHEMA、TABLE、VIEW

  • DROP SCHEMA、TABLE、VIEW

  • ALTER SCHEMA、TABLE

STL_QUERYTEXTSTL_UTILITYTEXTSVL_STATEMENTTEXT も参照してください。これらのビューには、システムで実行される SQL コマンドのタイムラインが示されます。この履歴は、トラブルシューティング、およびすべてのシステムアクティビティの監査追跡の作成に役立ちます。

STARTTIME および ENDTIME 列を使用すると、一定の時間内に記録されたステートメントがわかります。SQL テキストの長いブロックは、200 文字の長さに分割されます。SEQUENCE 列により、1 つのステートメントに属する複数のフラグメントのテキストを識別できます。

STL_DDLTEXT はすべてのユーザーに表示されます。スーパーユーザーはすべての行を表示できますが、通常のユーザーは自分のデータのみを表示できます。詳細については、「システムテーブルとビューのデータの可視性」を参照してください。

このテーブルの一部またはすべてのデータは、SYS モニタリングビュー SYS_QUERY_HISTORY でも確認できます。SYS モニタリングビューのデータは、使いやすく理解しやすいようにフォーマットされます。クエリには、SYS モニタリングビューを使用することをお勧めします。

テーブルの列

列名 データ型 説明
userid integer エントリを生成したユーザーの ID。
xid bigint ステートメントに関連付けられるトランザクション ID。
pid integer ステートメントに関連付けられるプロセス ID。
label character(320) クエリを実行するために使用される名前、または SET QUERY_GROUP コマンドによって定義されるラベル。クエリがファイルベースでないか、QUERY_GROUP パラメータが設定されていない場合、このフィールドは空になります。
starttime timestamp UTC で表されたクエリの開始時間。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358
endtime timestamp クエリの実行が完了した時刻 (UTC)。合計時間にはキューイングと実行が含まれます。秒の小数部は 6 桁の精度で表されます。例: 2009-06-12 11:29:19.131358
sequence integer 1 つのステートメントに含まれる文字数が 200 を超える場合、そのステートメントは追加の行に記録されます。シーケンス 0 が最初の行、1 が 2 番目の行、という順番です。
text character(200) 200 文字単位の SQL テキスト。このフィールドには、バックスラッシュ (\\) や改行 (\n) などの特殊文字が含まれる場合があります。

サンプルクエリ

次のクエリは、以前に実行した DDL ステートメントを含むレコードを返します。

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

4 つの CREATE TABLE ステートメントを表示するサンプル出力を次に示します。DDL ステートメントは読みやすくするために切り詰められ、text列に表示されます。

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)

ストアド SQL の再構築

次の SQL は、STL_DDLTEXT の text 列に保存されている行を一覧表示します。行の順序は、xid および sequence によって決まります。元の SQL が 200 文字より長い複数行の場合、STL_DDLTEXT は sequence により複数の行を含むことができます。

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'); ...

STL_DDLTEXT の text 列に保存された SQL を再構築するには、次の SQL ステートメントを実行します。これにより、text列の 1 つ以上のセグメントからの DDL ステートメントが 1 つに統合されます。再構築された SQL を実行する前に、特殊文字 (\n) がある場合は、SQL クライアントで改行に置き換えます。次の SELECT ステートメントの結果は、query_statement フィールドの SQL を再構築するために 3 つの行を順にまとめたものです。

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');