【问题标题】:Restrict queries to specific Amazon Athena database using jdbc url使用 jdbc url 限制对特定 Amazon Athena 数据库的查询
【发布时间】:2017-06-01 14:01:48
【问题描述】:

是否可以将查询限制到某个 Amazon Athena 数据库,以便只针对该数据库运行查询?

我想像

jdbc:awsathena://athena.us-east-1.amazonaws.com:443/databasename

,这样查询就像

SELECT * FROM exampletable

是可能的。而不是

SELECT * FROM databasename.exampletable

感谢任何提示。

【问题讨论】:

    标签: amazon-web-services jdbc amazon amazon-athena


    【解决方案1】:

    这可以使用以下 JDBC url:

    jdbc:awsathena://athena.us-east-1.amazonaws.com:443/AwsDataCatalog/databasename
    

    如果使用这个url连接,就不需要每次访问表时都加上数据库名。

    【讨论】:

    • 我能够使用这个解决方案来运行 MSCK REPAIR TABLE,它似乎不允许使用数据库名称来限定表名。
    • 我试过这个 URL 但它对我不起作用(查询的数据库仍然是默认的)。还有其他方法吗?
    【解决方案2】:

    您可以在 jdbc url 中指定一个 Schema 属性,如下所示;

    jdbc:awsathena://athena.[Region].amazonaws.com:443;User=[AccessKey];Password=[SecretKey];S3OutputLocation=[Output];Schema=[databasename];
    

    那么您可以执行不带数据库名称的查询,如下所示;

    SELECT * FROM exampletable;
    

    【讨论】:

      【解决方案3】:

      在通过 JDBC 连接时,无法使用 Athena 设置数据库。这在 Athena 文档 here 中有概述。

      这里是描述 Athena 语句中数据库命名空间的 sn-p。

      JDBC 使用默认数据库,但您也可以创建数据库并使用它们。在这种情况下,您应该在编写查询时使用数据库标识符作为表名的命名空间前缀,以区分默认数据库和自定义数据库中的表。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 1970-01-01
        • 2019-08-25
        • 2018-08-03
        • 2017-01-10
        • 2020-08-20
        相关资源
        最近更新 更多