0

我正在尝试使用 SQLWorkBenchJ 将分区添加到我在 Amazon Athena 中的表中。在 Athena 查询编辑器中运行时,查询工作正常。当我使用 SQLWorkbench 运行它时它不起作用

ALTER TABLE "AwsDataCatalog".mydb.mytable ADD IF NOT EXISTS 
PARTITION (folder = '10036', full = 'fullvalue') LOCATION 's3://my-s3-folder/10036/fullvalue/';

注意:我也尝试过使用 ALTER EXTERNAL_TABLE

sqlworkbench 只返回:

执行 SQL 命令时出错:

ALTER TABLE "AwsDataCatalog".mydb.mytable ADD PARTITION (folder = '10036', full >= 'fullvalue') LOCATION 's3://my-s3-folder...
未能运行查询
1 语句失败。

在查询编辑器中运行

ALTER TABLE mydb.mytable ADD PARTITION (folder = '10039', full = 'fullvalue') >LOCATION 's3://my-s3-folder/10039/fullvalue/';

查询成功。

任何人都知道如何进行这项工作,以便我可以将一些添加分区查询一起批处理?

4

2 回答 2

0

我没有成功地"AwsDataCatalog"在 ALTER 或 SHOW PARTITION 语句中限定数据库和表名(但它在 SELECT 中工作)。怎么样:

ALTER TABLE "AwsDataCatalog".mydb.mytable ADD IF NOT EXISTS 
PARTITION (folder = '10036', full = 'fullvalue')
LOCATION 's3://my-s3-folder/10036/fullvalue/';

这对你有用吗?

于 2017-02-08T19:12:59.663 回答
0

如果您想批量添加分区,您可以根据PARTITION需要重复该部分,包括多次:

ALTER TABLE mydb.mytable ADD IF NOT EXISTS 
  PARTITION (folder = '10036', full = 'fullvalue') LOCATION 's3://my-s3-folder/10036/fullvalue/'
  PARTITION (folder = '10037', full = 'fullvalue') LOCATION 's3://my-s3-folder/10037/fullvalue/'
  PARTITION (folder = '10038', full = 'fullvalue') LOCATION 's3://my-s3-folder/10038/fullvalue/';

跳过"AwsDataCatalog"表名的一部分,它不应该是必需的,这可能是您在 SQLWorkbench 中出现问题的原因。

于 2019-03-31T11:28:02.610 回答