

# 省略外部 Hive 元存储查询中的目录名称
<a name="datastores-hive-default-catalog"></a>

在外部 Hive 元存储上运行 DML 和 DDL 查询时，如果在查询编辑器中选择了目录名称，则可以通过省略该名称来简化查询语法。此功能将受到一些限制。

## DML 语句
<a name="datastores-hive-default-catalog-dml-statements"></a>

**使用已注册目录运行查询**

1. 您可以使用语法 `[[data_source_name].database_name].table_name` 将数据源名称置于数据库之前，如以下示例所示。

   ```
   select * from  "hms-catalog-1".hms_tpch.customer limit 10;
   ```

1. 如果已在查询编辑器中选定要使用的数据源，您可以在查询中省略数据源名称，如以下示例所示。

   ```
   select * from hms_tpch.customer limit 10:
   ```  
![\[使用默认数据源的 DML 查询。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/datastores-hive-default-catalog-2.png)

1. 在查询中使用多个数据源时，只能省略默认数据源名称，并且必须为任何非默认数据源指定全名。

   例如，假设在查询编辑器中将 `AwsDataCatalog` 选作默认数据源。以下查询摘录中的 `FROM` 语句完全限定了前两个数据源名称，但省略了第三个数据源的名称，因为它位于 AWS Glue 数据目录中。

   ```
   ...
   FROM ehms01.hms_tpch.customer,
            "hms-catalog-1".hms_tpch.orders,
            hms_tpch.lineitem
   ...
   ```

## DDL 语句
<a name="datastores-hive-default-catalog-ddl-statements"></a>

以下 Athena DDL 语句支持目录名称前缀。其他 DDL 语句中的目录名称前缀会导致语法错误。

```
SHOW TABLES [IN [catalog_name.]database_name] ['regular_expression']

SHOW TBLPROPERTIES [[catalog_name.]database_name.]table_name [('property_name')]

SHOW COLUMNS IN [[catalog_name.]database_name.]table_name

SHOW PARTITIONS [[catalog_name.]database_name.]table_name

SHOW CREATE TABLE [[catalog_name.][database_name.]table_name

DESCRIBE [EXTENDED | FORMATTED] [[catalog_name.][database_name.]table_name [PARTITION partition_spec] [col_name ( [.field_name] | [.'$elem$'] | [.'$key$'] | [.'$value$'] )]
```

与 DML 语句一样，在查询编辑器中选择了数据源和数据库时，可以省略查询中的数据源和数据库前缀。

在以下示例中，在查询编辑器中选择了 `hms-catalog-1` 数据源和 `hms_tpch` 数据库。即使查询本身中忽略 `hms-catalog-1` 前缀和 `hms_tpch` 数据库名称，`show create table customer` 语句也会成功。

![\[使用默认目录的 DDL 语句。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/datastores-hive-default-catalog-4.png)


## 在 JDBC 连接字符串中指定默认数据源
<a name="datastores-hive-default-catalog-jdbc"></a>

当您使用 Athena JDBC 驱动程序将 Athena 连接到外部 Hive 元存储时，可以使用 `Catalog` 参数在 SQL 编辑器（如 [SQL Workbench](https://www.sql-workbench.eu/index.html)）中的连接字符串中指定默认数据源名称。

**注意**  
要下载最新版本的 Athena JDBC 驱动程序，请参阅[将 Athena 与 JDBC 驱动程序一起使用](https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html)。

以下连接字符串指定默认数据源 *hms-catalog-name*。

```
    jdbc:awsathena://AwsRegion=us-east-1;S3OutputLocation=s3://amzn-s3-demo-bucket/lambda/results/;Workgroup=AmazonAthenaPreviewFunctionality;Catalog=hms-catalog-name;
```

下图显示了 SQL Workbench 中配置的示例 JDBC 连接 URL。

![\[在 SQL Workbench 中配置 JDBC 连接 URL。\]](http://docs.aws.amazon.com/zh_cn/athena/latest/ug/images/datastores-hive-default-catalog-jdbc-1.jpg)
