【问题标题】:AWS Redshift Bulk Insert + Encoding definitionAWS Redshift 批量插入 + 编码定义
【发布时间】:2014-06-19 16:38:26
【问题描述】:

是否可以在定义数据类型和编码的同时使用create table as 语法对 REdshift 进行批量插入?正确的语法是什么?

EG 以下给出'as'附近的语法错误:

create table my_table (
  a int not null encode runlength,
  b int not null encode runlength
) distkey(a) sortkey (a, b) as (
    select * from other_table
);

我只能通过仅定义列名(a 或 b)来使其工作,这是一个巨大的限制......

【问题讨论】:

  • 您在寻找COPY吗?
  • 不这么认为。 COPY 仅来自 S3,对吗?

标签: postgresql amazon-web-services bulkinsert amazon-redshift


【解决方案1】:

您可以像这样在 CREATE TABLE ... AS 查询中指定 DIST 和 SORT 键:

CREATE TABLE new_table 
DISTSTYLE KEY
DISTKEY ( my_dist )
SORTKEY ( my_sort )
AS
SELECT *
FROM   old_table
;

根据文档:http://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_TABLE_AS.html 我不相信您可以使用 CREATE TABLE AS 更改源表中的压缩编码。

【讨论】:

    【解决方案2】:

    此处提供了有关 Redshift CTAS 的更多详细信息:http://docs.aws.amazon.com/redshift/latest/dg/r_CTAS_usage_notes.html。简而言之,它没有提到您可以在 CTAS 语句中定义编码。但是您可以定义排序键和哈希键。此语句选择的默认编码为无。

    但是,如果您想进行批量插入,为什么不分两步进行。

    1. 使用您的编码和排序/哈希键创建表 new_table
    2. 作为 select * from old_table 插入 new_table

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-16
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 2021-09-08
      • 1970-01-01
      • 2013-11-10
      相关资源
      最近更新 更多