Amazon Redshift tidak akan lagi mendukung pembuatan UDF Python baru mulai Patch 198. UDF Python yang ada akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, lihat posting blog
Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan API metadata driver Amazon Redshift untuk aplikasi dan alat
Untuk aplikasi dan alat yang terhubung ke Amazon Redshift, seperti alat intelijen bisnis atau editor kueri, sebaiknya gunakan API metadata driver yang disediakan oleh Amazon Redshift JDBC 2.x, ODBC 2.x, atau driver Python untuk menemukan metadata tentang objek gudang data Anda, termasuk database, skema, tabel, kolom, dan tipe data. Sebagai alternatif, Anda dapat menggunakan perintah Amazon RedshiftSHOW.
Gunakan API metadata driver untuk manfaat berikut:
-
Specification-compliant. Driver JDBC dan ODBC menerapkan antarmuka metadata standar (
DatabaseMetaDatadi JDBC, dan di ODBC).SQLTablesSQLColumnsKarena Python DB-API (PEP 249) tidak mendefinisikan spesifikasi API metadata, driver Amazon Redshift Python mengikuti spesifikasi DatabaseMetaData JDBC, menyediakan metode yang setara seperti,, dan.get_tables()get_columns()get_schemas()API ini mengikuti spesifikasi yang terdefinisi dengan baik, sehingga kode integrasi Anda portabel. Saat Amazon Redshift mengembangkan tabel sistem internalnya, aplikasi Anda tidak perlu diubah. -
Performance-optimized. API metadata driver dioptimalkan untuk mengembalikan metadata secara efisien. AWS terus berinvestasi dalam kinerja API metadata driver.
-
Forward-compatible. Amazon Redshift mematuhi spesifikasi konektor JDBC, ODBC, dan Python. Saat Anda membuat kode terhadap API standar ini, aplikasi Anda dilindungi dari perubahan pada struktur katalog sistem yang mendasarinya.
Contoh: Menggunakan JDBC DatabaseMetaData.getTables () untuk mengambil metadata tabel
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"});
Contoh: Menggunakan Python cursor.get_columns () untuk mengambil metadata kolom
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', '%')
Contoh: Menggunakan ODBC SQLPrimaryKeys () untuk mengambil metadata kunci primer
// 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); } }
Contoh: Menggunakan ODBC SqlTables () untuk daftar database dan skema
ODBC API tidak menyediakan fungsi terpisah untuk mencantumkan katalog atau skema. Sebagai gantinya, Anda menggunakan konvensi panggilan khusus SQLTables() untuk mengambil informasi ini.
Untuk daftar semua database (katalog)
Panggil SQLTables() dengan CatalogName set keSQL_ALL_CATALOGS. Atur SchemaName dan TableName kosongkan string. Hasil set mengembalikan nilai yang valid hanya di TABLE_CAT kolom. Semua kolom lainnya berisi NULL.
// 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)
Untuk daftar semua skema
Panggil SQLTables() dengan SchemaName set keSQL_ALL_SCHEMAS. Atur CatalogName dan TableName kosongkan string.
// 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)
catatan
Spesifikasi ODBC mendefinisikan hanya TABLE_SCHEM sebagai valid untuk enumerasi skema. Amazon Redshift juga terisi TABLE_CAT karena mendukung penemuan metadata lintas basis data, dan setiap skema dicakup ke database tertentu.