

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Interroga il AWS Glue Data Catalog
<a name="querying-glue-catalog"></a>

Poiché AWS Glue Data Catalog viene utilizzato da molti Servizi AWS come archivio centrale di metadati, potresti voler interrogare i metadati del Data Catalog. A tale scopo, è possibile utilizzare le query SQL in Athena. Puoi usare Athena per interrogare i metadati AWS Glue del catalogo come database, tabelle, partizioni e colonne.

Per ottenere i metadati AWS Glue del catalogo, interrogate il `information_schema` database sul backend Athena. Le query di esempio in questo argomento mostrano come utilizzare Athena per eseguire query sui metadati del catalogo AWS Glue per i casi di utilizzo comuni.

## Considerazioni e limitazioni
<a name="querying-glue-catalog-considerations-limitations"></a>
+ Invece di interrogare il database `information_schema`, puoi utilizzare i singoli [comandi DDL](ddl-reference.md)di Apache Hive per estrarre informazioni sui metadati per database, tabelle, viste, partizioni e colonne specifici da Athena. Tuttavia, l'output è in formato non tabulare.
+ `information_schema`L'interrogazione è più performante se si dispone di una quantità di metadati da piccola a moderata. AWS Glue Se disponi di una quantità di metadati elevata, possono verificarsi degli errori.
+ Non è possibile utilizzare `CREATE VIEW` per creare una visualizzazione nel database `information_schema`. 

**Topics**
+ [Considerazioni e limitazioni](#querying-glue-catalog-considerations-limitations)
+ [Elencare database e ricercare un database specificato](querying-glue-catalog-querying-available-databases-including-rdbms.md)
+ [Elencare le tabelle in un database specificato e ricercare una tabella per nome](querying-glue-catalog-listing-tables.md)
+ [Elencare partizioni per una tabella specifica](querying-glue-catalog-listing-partitions.md)
+ [Elencare o ricercare colonne per una tabella o una vista specificata](querying-glue-catalog-listing-columns.md)
+ [Elenca le colonne che hanno in comune tabelle specifiche](querying-glue-catalog-listing-columns-in-common.md)
+ [Elencare tutte le colonne di ogni tabella](querying-glue-catalog-listing-all-columns-for-all-tables.md)

# Elencare database e ricercare un database specificato
<a name="querying-glue-catalog-querying-available-databases-including-rdbms"></a>

Negli esempi in questa sezione viene illustrato come elencare i database nei metadati in base al nome dello schema.

**Example Elencare i database**  
La query di esempio seguente elenca i database della tabella `information_schema.schemata`.  

```
SELECT schema_name
FROM   information_schema.schemata
LIMIT  10;
```
Nella tabella seguente sono riportati i risultati di esempio.  


****  

|  |  | 
| --- |--- |
| 6 | alb-databas1 | 
| 7 | alb\$1original\$1cust | 
| 8 | alblogsdatabase | 
| 9 | athena\$1db\$1test | 
| 10 | athena\$1ddl\$1db | 

**Example Ricerca di un database specificato**  
Nella query di esempio seguente, `rdspostgresql` è un database di esempio.  

```
SELECT schema_name
FROM   information_schema.schemata
WHERE  schema_name = 'rdspostgresql'
```
Nella tabella seguente sono riportati i risultati di esempio.  


****  

|  | schema\$1name | 
| --- | --- | 
| 1 | rdspostgresql | 

# Elencare le tabelle in un database specificato e ricercare una tabella per nome
<a name="querying-glue-catalog-listing-tables"></a>

Per elencare i metadati per le tabelle, è possibile eseguire query in base allo schema di tabella o al nome della tabella.

**Example Elencare le tabelle per schema**  
Nella query seguente sono elencate le tabelle che utilizzano lo schema di tabella `rdspostgresql`.  

```
SELECT table_schema,
       table_name,
       table_type
FROM   information_schema.tables
WHERE  table_schema = 'rdspostgresql'
```
La tabella seguente mostra un risultato di esempio.  


****  

|  | table\$1schema | table\$1name | table\$1type | 
| --- | --- | --- | --- | 
| 1 | rdspostgresql | rdspostgresqldb1\$1public\$1account | BASE TABLE | 

**Example Ricercare una tabella per nome**  
La query seguente ottiene informazioni sui metadati per la tabella `athena1`.  

```
SELECT table_schema,
       table_name,
       table_type
FROM   information_schema.tables
WHERE  table_name = 'athena1'
```
La tabella seguente mostra un risultato di esempio.  


****  

|  | table\$1schema | table\$1name | table\$1type | 
| --- | --- | --- | --- | 
| 1 | predefinito | athena1 | BASE TABLE | 

# Elencare partizioni per una tabella specifica
<a name="querying-glue-catalog-listing-partitions"></a>

Puoi utilizzare`SHOW PARTITIONS table_name` per elencare le partizioni di una tabella specificata, come nell'esempio seguente.

```
SHOW PARTITIONS cloudtrail_logs_test2
```

È possibile utilizzare una query di metadati `$partitions` per elencare i numeri e i valori di partizione per una tabella specifica.

**Example - Esecuzione di query sulle partizioni di una tabella utilizzando la sintassi \$1partitions**  
La query di esempio seguente elenca le partizioni della tabella `cloudtrail_logs_test2` utilizzando la sintassi `$partitions`.  

```
SELECT * FROM default."cloudtrail_logs_test2$partitions" ORDER BY partition_number
```
Nella tabella seguente sono riportati i risultati di esempio.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | Anno | Mese | Day (Giorno) | 
| --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | predefinito | cloudtrail\$1logs\$1test2 | 2020 | 08 | 10 | 
| 2 | awsdatacatalog | predefinito | cloudtrail\$1logs\$1test2 | 2020 | 08 | 11 | 
| 3 | awsdatacatalog | predefinito | cloudtrail\$1logs\$1test2 | 2020 | 08 | 12 | 

# Elencare o ricercare colonne per una tabella o una vista specificata
<a name="querying-glue-catalog-listing-columns"></a>

È possibile elencare tutte le colonne per una tabella, tutte le colonne per una vista o ricercare una colonna per nome in un database e una tabella specificati.

Per elencare le colonne, utilizzare una query `SELECT *`. Nella clausola `FROM`, specificare `information_schema.columns`. Nella clausola `WHERE`, utilizzare `table_schema='database_name'` per specificare il database e `table_name = 'table_name'` per specificare la tabella o la visualizzazione con le colonne che si desidera elencare.

**Example Elencare tutte le colonne di una tabella specificata**  
La query di esempio seguente elenca tutte le colonne della tabella `rdspostgresqldb1_public_account`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'rdspostgresql'
       AND table_name = 'rdspostgresqldb1_public_account'
```
Nella tabella seguente sono riportati i risultati di esempio.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | password | 1 |  | YES | varchar |  |  | 
| 2 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | user\$1id | 2 |  | YES | intero |  |  | 
| 3 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | created\$1on | 3 |  | YES | timestamp |  |  | 
| 4 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | last\$1login | 4 |  | YES | timestamp |  |  | 
| 5 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | e-mail | 5 |  | YES | varchar |  |  | 
| 6 | awsdatacatalog | rdspostgresql | rdspostgresqldb1\$1public\$1account | username | 6 |  | YES | varchar |  |  | 

**Example Elencare le colonne di una visualizzazione specificata**  
La query di esempio seguente elenca tutte le colonne nel database `default` per la vista `arrayview`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'default'
       AND table_name = 'arrayview'
```
Nella tabella seguente sono riportati i risultati di esempio.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | predefinito | arrayview | searchdate | 1 |  | YES | varchar |  |  | 
| 2 | awsdatacatalog | predefinito | arrayview | sid | 2 |  | YES | varchar |  |  | 
| 3 | awsdatacatalog | predefinito | arrayview | btid | 3 |  | YES | varchar |  |  | 
| 4 | awsdatacatalog | predefinito | arrayview | p | 4 |  | YES | varchar |  |  | 
| 5 | awsdatacatalog | predefinito | arrayview | infantprice | 5 |  | YES | varchar |  |  | 
| 6 | awsdatacatalog | predefinito | arrayview | sump | 6 |  | YES | varchar |  |  | 
| 7 | awsdatacatalog | predefinito | arrayview | journeymaparray | 7 |  | YES | array(varchar) |  |  | 

**Example Ricercare una colonna per nome in un database e una tabella specificati**  
La query di esempio seguente cerca i metadati per la colonna `sid` nella vista `arrayview` del database `default`.  

```
SELECT *
FROM   information_schema.columns
WHERE  table_schema = 'default'
       AND table_name = 'arrayview' 
       AND column_name='sid'
```
La tabella seguente mostra un risultato di esempio.  


****  

|  | table\$1catalog | table\$1schema | table\$1name | column\$1name | ordinal\$1position | column\$1default | is\$1nullable | data\$1type | comment | extra\$1info | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | 
| 1 | awsdatacatalog | predefinito | arrayview | sid | 2 |  | YES | varchar |  |  | 

# Elenca le colonne che hanno in comune tabelle specifiche
<a name="querying-glue-catalog-listing-columns-in-common"></a>

Puoi elencare le colonne che hanno in comune tabelle specifiche di un database.
+ Utilizzo della sintassi `SELECT column_name FROM information_schema.columns`.
+ Per la clausola `WHERE`, utilizza la sintassi `WHERE table_name IN ('table1', 'table2')`.

**Example - Elencare le colonne comuni per due tabelle nello stesso database**  
La seguente query di esempio elenca le colonne che le tabelle `table1` e `table2` hanno in comune.  

```
SELECT column_name
FROM information_schema.columns
WHERE table_name IN ('table1', 'table2')
GROUP BY column_name
HAVING COUNT(*) > 1;
```

# Elencare tutte le colonne di ogni tabella
<a name="querying-glue-catalog-listing-all-columns-for-all-tables"></a>

Puoi elencare tutte le colonne di ogni tabella in `AwsDataCatalog` o di tutte le tabelle in un database specifico in `AwsDataCatalog`.
+ Per elencare tutte le colonne di ogni database in `AwsDataCatalog`, utilizza la query `SELECT * FROM information_schema.columns`.
+ Per limitare i risultati a un database specifico, utilizza `table_schema='database_name'` nella clausola `WHERE`.

**Example - Elencare tutte le colonne di ogni tabella di un database specifico**  
La query di esempio seguente elenca tutte le colonne di ogni tabella nel database `webdata`.  

```
SELECT * FROM information_schema.columns WHERE table_schema = 'webdata'            
```