

 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 ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) yang diterbitkan pada 30 Juni 2025. 

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
<a name="discovering-metadata-driver-api"></a>

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](jdbc20-install.md), [ ODBC 2.x](odbc20-install.md), atau [ Python ](python-redshift-driver.md) 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 (`DatabaseMetaData`di JDBC, `SQLTables` dan di ODBC). `SQLColumns` Karena Python DB-API (PEP 249) tidak mendefinisikan spesifikasi API metadata, driver Amazon Redshift Python mengikuti DatabaseMetaData spesifikasi JDBC, menyediakan metode yang setara seperti`get_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
<a name="discovering-metadata-example-jdbc"></a>

```
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
<a name="discovering-metadata-example-python"></a>

```
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
<a name="discovering-metadata-example-odbc"></a>

```
// 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
<a name="discovering-metadata-example-odbc-sqltables"></a>

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 ke`SQL_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 ke`SQL_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.