Abrufen der Ergebnisse einer SQL-Anweisung - Amazon Redshift

Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im Blog-Posting.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abrufen der Ergebnisse einer SQL-Anweisung

Verwenden Sie den redshift-data get-statement-result-v2 AWS CLI Befehl redshift-data get-statement-result or, um das Ergebnis einer ausgeführten SQL-Anweisung abzurufen. Die Ergebnisse von get-statement-result liegen im JSON-Format vor. Die Ergebnisse von get-statement-result-v2 liegen im CSV-Format vor. Sie können eine Id angeben, die Sie als Antwort auf execute-statement oder batch-execute-statement erhalten. Der Id-Wert für eine SQL-Anweisung, die von batch-execute-statement ausgeführt wurde, kann im Ergebnis von describe-statement abgerufen werden und erhält einen Doppelpunkt und eine Sequenznummer wie b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2 als Suffix. Wenn Sie mehrere SQL-Anweisungen mit batch-execute-statement ausführen, hat jede SQL-Anweisung einen Id-Wert wie in describe-statement gezeigt. Die Autorisierung zum Ausführen dieses Befehls basiert auf den IAM-Berechtigungen des Aufrufers.

Die folgende Anweisung gibt das Ergebnis einer SQL-Anweisung zurück, die von execute-statement ausgeführt wurde und bei der ResultFormat standardmäßig auf JSON gesetzt wurde. Rufen Sie die Operation get-statement-result auf, um die Ergebnisse abzurufen.

aws redshift-data get-statement-result --id d9b6c0c9-0747-4bf4-b142-e8883122f766

Die folgende Anweisung gibt das Ergebnis einer zweiten SQL-Anweisung zurück, die von ausgeführt wurde batch-execute-statement.

aws redshift-data get-statement-result --id b2906c76-fa6e-4cdf-8c5f-4de1ff9b7652:2

Im Folgenden sehen Sie ein Beispiel für die Antwort auf einen Aufruf an get-statement-result. Das SQL-Ergebnis wird hier im JSON-Format im Records-Schlüssel der Antwort zurückgegeben.

{ "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "userid", "length": 0, "name": "userid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "query", "length": 0, "name": "query", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "label", "length": 0, "name": "label", "nullable": 0, "precision": 320, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "xid", "length": 0, "name": "xid", "nullable": 0, "precision": 19, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int8" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "pid", "length": 0, "name": "pid", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "database", "length": 0, "name": "database", "nullable": 0, "precision": 32, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": true, "isCurrency": false, "isSigned": false, "label": "querytxt", "length": 0, "name": "querytxt", "nullable": 0, "precision": 4000, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "bpchar" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "starttime", "length": 0, "name": "starttime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": false, "label": "endtime", "length": 0, "name": "endtime", "nullable": 0, "precision": 29, "scale": 6, "schemaName": "", "tableName": "stll_query", "type": 93, "typeName": "timestamp" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "aborted", "length": 0, "name": "aborted", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "insert_pristine", "length": 0, "name": "insert_pristine", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "concurrency_scaling_status", "length": 0, "name": "concurrency_scaling_status", "nullable": 0, "precision": 10, "scale": 0, "schemaName": "", "tableName": "stll_query", "typeName": "int4" } ], "Records": [ [ { "longValue": 1 }, { "longValue": 3 }, { "stringValue": "health" }, { "longValue": 1023 }, { "longValue": 15279 }, { "stringValue": "dev" }, { "stringValue": "select system_status from stv_gui_status;" }, { "stringValue": "2020-08-21 17:33:51.88712" }, { "stringValue": "2020-08-21 17:33:52.974306" }, { "longValue": 0 }, { "longValue": 0 }, { "longValue": 6 } ] ], "TotalNumRows": 1 }

Das folgende Beispiel zeigt eine SQL-Anweisung, die von execute-statement ausgeführt wird, um Ergebnisse im JSON-Format zurückzugeben. Die Tabelle testingtable enthält drei Ganzzahlspalten (col1, col2, col3) und es gibt drei Zeilen mit Werten (1, 2, 3), (4, 5, 6) und (7, 8, 9).

aws redshift-data execute-statement --database dev --sql "SELECT col1, col2, col3 FROM testingtable" --cluster-id mycluster-test --result-format JSON
{ "ClusterIdentifier": "mycluster-test", "CreatedAt": "2024-04-02T16:45:25.144000+00:00", "Database": "dev", "DbUser": "IAMR:Administrator", "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3" }

Im Folgenden sehen Sie ein Beispiel für die Antwort auf einen Aufruf an get-statement-result. Das SQL-Ergebnis wird hier im JSON-Format im Records-Schlüssel der Antwort zurückgegeben.

aws redshift-data get-statement-result --id d468d942-6df9-4f85-8ae3-bac01a61aec3
{ "Records": [ [ { "longValue": 1 }, { "longValue": 2 }, { "longValue": 3 } ], [ { "longValue": 4 }, { "longValue": 5 }, { "longValue": 6 } ], [ { "longValue": 7 }, { "longValue": 8 }, { "longValue": 9 } ] ], "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col1", "name": "col1", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col2", "name": "col2", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col3", "name": "col3", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 } ], "TotalNumRows": 3 }

Das folgende Beispiel zeigt eine SQL-Anweisung, die von execute-statement ausgeführt wird, um Ergebnisse im CSV-Format zurückzugeben. Die Tabelle testingtable enthält drei Ganzzahlspalten (col1, col2, col3) und es gibt drei Zeilen mit Werten (1, 2, 3), (4, 5, 6) und (7, 8, 9).

aws redshift-data execute-statement --database dev --sql "SELECT col1, col2, col3 FROM testingtable" --cluster-id mycluster-test --result-format CSV
{ "ClusterIdentifier": "mycluster-test", "CreatedAt": "2024-04-02T16:45:25.144000+00:00", "Database": "dev", "DbUser": "IAMR:Administrator", "Id": "d468d942-6df9-4f85-8ae3-bac01a61aec3" }

Im Folgenden sehen Sie ein Beispiel für die Antwort auf einen Aufruf an get-statement-result-v2. Das SQL-Ergebnis wird hier im CSV-Format im Records-Schlüssel der Antwort zurückgegeben. Zeilen werden durch Wagenrücklauf und Zeilenvorschub (\r\n) getrennt. Die erste Zeile, die in Records zurückgegeben wird, sind die Spaltenüberschriften. Die Ergebnisse im CSV-Format werden in 1-MB-Blöcken zurückgegeben, wobei in jedem Block eine beliebige Anzahl von Zeilen bis zu 1 MB gespeichert werden kann.

aws redshift-data get-statement-result-v2 --id d468d942-6df9-4f85-8ae3-bac01a61aec3
{ "Records": [ { "CSVRecords": "col1,col2,col3\r\n1,2,3\r\n4,5,6\r\n7,8,9\r\n" } ], "ColumnMetadata": [ { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col1", "name": "col1", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col2", "name": "col2", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 }, { "isCaseSensitive": false, "isCurrency": false, "isSigned": true, "label": "col3", "name": "col3", "nullable": 1, "precision": 10, "scale": 0, "schemaName": "public", "tableName": "testingtable", "typeName": "int4", "length": 0 } ], "TotalNumRows": 3, "ResultFormat": "csv" }