View a markdown version of this page

Verwenden Sie die Amazon Redshift-Treibermetadaten-API für Anwendungen und Tools - Amazon Redshift

Amazon Redshift unterstützt die Verwendung von Python-UDFs nach dem 30. Juni 2026 nicht mehr. Wir werden damit beginnen, es schrittweise durchzusetzen. Weitere Informationen zum Ende der Lebensdauer von Python und zu den Migrationsoptionen finden Sie im Blogbeitrag, der am 30. Juni 2025 veröffentlicht wurde.

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.

Verwenden Sie die Amazon Redshift-Treibermetadaten-API für Anwendungen und Tools

Für Anwendungen und Tools, die eine Verbindung zu Amazon Redshift herstellen, wie z. B. ein Business Intelligence-Tool oder ein Abfrage-Editor, empfehlen wir, dass Sie die Treibermetadaten-API verwenden, die von den Amazon Redshift JDBC 2.x-, ODBC 2.x - oder Amazon Redshift Python Connector Python-Treibern bereitgestellt wird, um Metadaten zu Ihren Data Warehouse-Objekten zu ermitteln, einschließlich Datenbanken, Schemas, Tabellen, Spalten und Datentypen. Als Alternative können Sie Amazon Redshift-Befehle verwenden. SHOW

Nutzen Sie die Treiber-Metadaten-API für die folgenden Vorteile:

  • Specification-compliant. Die JDBC- und ODBC-Treiber implementieren Standard-Metadatenschnittstellen (DatabaseMetaDatain JDBC und in ODBC). SQLTables SQLColumns Da Python DB-API (PEP 249) keine Metadaten-API-Spezifikation definiert, folgt der Amazon Redshift-Python-Treiber der DatabaseMetaData JDBC-Spezifikation und bietet äquivalente Methoden wie, und. get_tables() get_columns() get_schemas() Diese APIs folgen genau definierten Spezifikationen, sodass Ihr Integrationscode portabel ist. Da Amazon Redshift seine internen Systemtabellen weiterentwickelt, muss sich Ihre Anwendung nicht ändern.

  • Performance-optimized. Die Treiber-Metadaten-API ist optimiert, um Metadaten effizient zurückzugeben. AWS investiert weiterhin in die Leistung der Treibermetadaten-API.

  • Forward-compatible. Amazon Redshift hält sich an die JDBC-, ODBC- und Python-Connector-Spezifikationen. Wenn Sie anhand dieser Standard-APIs programmieren, ist Ihre Anwendung vor Änderungen an der zugrunde liegenden Systemkatalogstruktur geschützt.

Beispiel: Verwenden von JDBC DatabaseMetaData.getTables () zum Abrufen von Tabellenmetadaten

DatabaseMetaData dbmd = connection.getMetaData(); // getTables(catalog, schemaPattern, tableNamePattern, types) // catalog: "test" — filters to the database named "test" // schemaPattern: "test_pattern" — filters schemas matching this pattern (supports SQL wildcards % and _) // tableNamePattern: null — no filter, returns all table names // types: {"TABLE", "EXTERNAL TABLE"} — only return regular tables and external tables ResultSet rs = dbmd.getTables("test", "test_pattern", null, new String[] {"TABLE", "EXTERNAL TABLE"});

Beispiel: Verwenden von Python cursor.get_columns () zum Abrufen von Spaltenmetadaten

cursor: redshift_connector.Cursor = conn.cursor() # get_columns(catalog, schema_pattern, table_name_pattern, column_name_pattern) # catalog: 'test' — filters to the database named "test" # schema_pattern: 'test_pattern' — filters schemas matching this pattern (supports SQL wildcards % and _) # table_name_pattern: 'testabc' — filters to the table named "testabc" # column_name_pattern: '%' — wildcard, returns all columns in the matching table result: tuple = cursor.get_columns('test', 'test_pattern', 'testabc', '%')

Beispiel: Verwenden von ODBC SQLPrimaryKeys () zum Abrufen von Primärschlüssel-Metadaten

// SQLPrimaryKeys(hstmt, catalog, catalog_len, schema, schema_len, table, table_len) // catalog: "test" — filters to the database named "test" // schema: "test_schema" — filters to the schema named "test_schema" // table: "test_table" — retrieves primary key columns for this table // Note: Unlike getTables/getColumns, SQLPrimaryKeys does NOT support wildcard patterns. retcode = SQLPrimaryKeys(hstmt, (SQLCHAR *)"test", SQL_NTS, (SQLCHAR *)"test_schema", SQL_NTS, (SQLCHAR *)"test_table", SQL_NTS); while (SQL_SUCCEEDED(retcode = SQLFetch(hstmt))) { for (i = 1; i <= columns; i++) { retcode = SQLGetData(hstmt, i, SQL_C_CHAR, buf, sizeof(buf), &indicator); } }

Beispiel: Verwenden von ODBC SqlTables () zum Auflisten von Datenbanken und Schemas

Die ODBC-API bietet keine separaten Funktionen zum Auflisten von Katalogen oder Schemas. Stattdessen verwenden Sie spezielle Aufrufkonventionen von, SQLTables() um diese Informationen abzurufen.

Um alle Datenbanken (Kataloge) aufzulisten

Rufen Sie SQLTables() mit der CatalogName Einstellung auf auf auf auf auf. SQL_ALL_CATALOGS Setze SchemaName undTableName, um Zeichenketten zu leeren. Die Ergebnismenge gibt nur gültige Werte in der TABLE_CAT Spalte zurück. Alle anderen Spalten enthalten NULL-Werte.

// List all catalogs (databases) available on the data source. retcode = SQLTables(hstmt, (SQLCHAR *)SQL_ALL_CATALOGS, SQL_NTS, // CatalogName = "%" (SQL_ALL_CATALOGS) (SQLCHAR *)"", 0, // SchemaName = "" (empty string) (SQLCHAR *)"", 0, // TableName = "" (empty string) NULL, 0); // TableType = NULL (not filtered)

Um alle Schemas aufzulisten

Rufen Sie SQLTables() mit SchemaName set to auf auf auf auf. SQL_ALL_SCHEMAS Setze CatalogName undTableName, um Zeichenketten zu leeren.

// List all schemas available on the data source. retcode = SQLTables(hstmt, (SQLCHAR *)"", 0, // CatalogName = "" (empty string) (SQLCHAR *)SQL_ALL_SCHEMAS, SQL_NTS, // SchemaName = "%" (SQL_ALL_SCHEMAS) (SQLCHAR *)"", 0, // TableName = "" (empty string) NULL, 0); // TableType = NULL (not filtered)
Anmerkung

Die ODBC-Spezifikation definiert nur TABLE_SCHEM als gültig für die Schemaaufzählung. Amazon Redshift füllt auch Daten ausTABLE_CAT, da es die datenbankübergreifende Erkennung von Metadaten unterstützt und jedes Schema auf eine bestimmte Datenbank beschränkt ist.