雪花无法使用插入到具有 md5 字段的方式插入多行

Snowflake Unable to insert multiple rows using insert into having md5 field

我正在使用 INSERT INTO table VALUES 添加多行,如下所示:

insert into hub values 
 (md5(md5('test1')) as enc,  CURRENT_TIMESTAMP() as ct, 'DATA_SOURCE_1', 'test1'),
 (md5(md5('test2')) as enc,  CURRENT_TIMESTAMP() as ct, 'DATA_SOURCE_1', 'test2')
;

我收到以下错误:

SQL compilation error: syntax error line 2 at position 19 unexpected 'as'. syntax error line 2 at position 28 unexpected 'CURRENT_TIMESTAMP'. syntax error line 2 at position 50 unexpected ''DATA_SOURCE_1''. syntax error line 3 at position 19 unexpected 'as'. syntax error line 3 at position 28 unexpected 'CURRENT_TIMESTAMP'. syntax error line 3 at position 50 unexpected ''DATA_SOURCE_1''.

我试图从子查询中删除 as,但出现以下错误:

SQL compilation error: Invalid expression [MD5(MD5('test'))] in VALUES clause

我知道 md5 应该 return 一个值而不是一个表达式,这就是我使用 AS 但它不起作用的原因。

这对我来说似乎是一个错误,它有点类似于 。您可以用不同的方式编写插入,但是以获得相同的结果:

insert into hub
    select md5(md5('test1')), CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test1'
union all
    select md5(md5('test2')), CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test2'

或者像下面这样,如果 VALUE 部分有很多行,这可能会更简洁:

insert into hub
select
    md5(md5(column1)),
    column2,
    column3,
    column4
from
values
       ('test1', CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test1'),
       ('test2', CURRENT_TIMESTAMP(), 'DATA_SOURCE_1', 'test2')