Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, 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 driver Amazon Redshift JDBC 2.x, ODBC 2.x, atau Python untuk menemukan metadata tentang objek gudang data Anda, termasuk database, skema, tabel, kolom, dan tipe data. Sebagai alternatif, Anda dapat menggunakan SHOW perintah Amazon Redshift.
Gunakan API metadata driver untuk manfaat berikut:
-
Specification-compliant. Driver JDBC dan ODBC menerapkan antarmuka metadata standar (
DatabaseMetaDatadi JDBC,SQLTablesdan di ODBC).SQLColumnsKarena Python DB-API (PEP 249) tidak mendefinisikan spesifikasi API metadata, driver Amazon Redshift Python mengikuti DatabaseMetaData spesifikasi JDBC, menyediakan metode yang setara sepertiget_tables(),, dan.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_column () 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 utama
// 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 membuat daftar database dan skema
API ODBC tidak menyediakan fungsi terpisah untuk daftar 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. Set SchemaName el dan TableName kosongkan string. Kumpulan hasil 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 membuat daftar semua skema
Panggil SQLTables() dengan SchemaName set keSQL_ALL_SCHEMAS. Set CatalogName el 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 mengisi TABLE_CAT karena mendukung penemuan metadata lintas database, dan setiap skema dicakup ke database tertentu.