Snowflake 中按分区进行集群语法错误且无法加载默认数据

问题描述 投票:0回答:1

我是雪花新手。当我尝试学习雪花时,我遇到了两个问题,即

问题#1

当我尝试执行以下命令时,我收到语法错误

命令:

CREATE OR REPLACE TABLE PUBLIC.CUSTOMER_CLUSTER (
 C_CUSTKEY NUMBER(38,0),
 C_NAME VARCHAR(25),
 C_ADDRESS VARCHAR(40),
 C_NATIONKEY NUMBER(38,0),
 C_PHONE VARCHAR(15),
 C_ACCTBAL NUMBER(12,2),
 C_MKTSEGMENT VARCHAR(10),
 C_COMMENT VARCHAR(117),
 cluster BY (C_NATIONKEY)
);

错误:

第 11 行语法错误位于位置 0 意外的 ')'

我在按功能进行集群时遇到错误。

问题#2

insert into public.customer_nocluster 
    select * 
    from snowflake_SAMPLE_DATA.TPCH_SF1000.CUSTOMER;

在上面的命令中

customer_nocluster -> table_name
snowflake_SAMPLE_DATA.TPCH_SF1000.CUSTOMER -> 

我们从雪花私人数据加载数据(帐户中可用的默认数据)。

错误:

将待处理的斑豆串起来。根据愤怒的海豚的说法,快速待处理的请求使用。小心 eve' 太长,会被截断。

你能指导我哪里做错了吗?

sql database snowflake-cloud-data-platform syntax-error
1个回答
1
投票

所以第二个问题:

如果我们发现失败的行:

select * from snowflake_SAMPLE_DATA.TPCH_SF1000.CUSTOMER
where c_comment like 'ly pending pinto beans. quickly pending requests%';

我们得到一行:

该字符串的长度是 111 字节。

所以如果 nocluster 的列宽为 110

CREATE OR REPLACE TABLE PUBLIC.CUSTOMER_NOCLUSTER (
 C_CUSTKEY NUMBER,
 C_NAME VARCHAR(25),
 C_ADDRESS VARCHAR(40),
 C_NATIONKEY NUMBER,
 C_PHONE VARCHAR(15),
 C_ACCTBAL NUMBER(12,2),
 C_MKTSEGMENT VARCHAR(10),
 C_COMMENT VARCHAR(110)
 );

然后复制,我们得到如下内容:

insert into public.customer_nocluster 
    select --*
        C_CUSTKEY
        ,C_NAME
        ,C_ADDRESS
        ,C_NATIONKEY
        ,C_PHONE
        ,C_ACCTBAL
        ,C_MKTSEGMENT
        ,C_COMMENT
    from snowflake_SAMPLE_DATA.TPCH_SF1000.CUSTOMER;

串起讽刺性的沉积物。快速定期存款的愉快讽刺的套餐会狡猾地反对快速 s' 太长并且会被截断

所以如果我们只取前 110 个字符:

insert into public.customer_nocluster 
    select --*
        C_CUSTKEY
        ,C_NAME
        ,C_ADDRESS
        ,C_NATIONKEY
        ,C_PHONE
        ,C_ACCTBAL
        ,C_MKTSEGMENT
        ,LEFT(C_COMMENT, 110)
    from snowflake_SAMPLE_DATA.TPCH_SF1000.CUSTOMER;

现在运行得很开心:

因此,NickW 关于“不要使用 SELECT *”的观点是,select star 按照源表或视图中定义的顺序获取列,如果视图表的定义发生更改,则可以更改对齐方式坏了,所以在“生产代码”中始终明确是一个好习惯。我在原型设计时使用 SELECT * 来“让它工作”,一旦一切都按预期进行,就会使代码变得无聊/安全。

© www.soinside.com 2019 - 2024. All rights reserved.