

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

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 Amazon Redshift [JDBC 2.x, ODBC 2.x,](jdbc20-install.md) [atau driver [Python](python-redshift-driver.md) untuk menemukan metadata tentang objek gudang data Anda,](odbc20-install.md) termasuk database, skema, tabel, kolom, dan tipe data. Sebagai alternatif, Anda dapat menggunakan perintah Amazon Redshift`SHOW`.

Gunakan API metadata driver untuk manfaat berikut:
+ **Specification-compliant**. Driver JDBC dan ODBC menerapkan antarmuka metadata standar (`DatabaseMetaData`di JDBC, dan di ODBC). `SQLTables` `SQLColumns` Karena 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
<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\_columns () 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 primer
<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 daftar database dan skema
<a name="discovering-metadata-example-odbc-sqltables"></a>

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