0

我正在创建一个雪管,它将数据从 S3 存储桶加载到表中。我的表包含数据类型 GEOGRAPHY 的列。

当我创建雪管时,我收到以下错误消息:“ SQL 编译错误:表达式类型与列数据类型不匹配,需要 GEOGRAPHY 但为列 GEO_LOCATION 获得了 VARCHAR(16777216)

为什么它假定传入列的类型是VARCHAR(16777216)?我如何改变这个假设?因为我知道我的输入列将采用正确的格式。

4

2 回答 2

0

在你的雪管定义中尝试这样的事情:

TO_GEOGRAPHY( <varchar_expression> )

于 2021-09-02T11:46:48.203 回答
0

就目前而言,雪管在加载地理数据时需要转换。这是该问题的重现:

create or replace stage mystage;
create or replace table test ( a geography );
insert into test values ('POINT(-122.35 37.55)' );
copy into @mystage from test;
truncate table test;

copy into test from @mystage; -- works
truncate table test;

create or replace pipe test_pipe as -- fails with expecting GEOGRAPHY but got VARCHAR(16777216) for column A
copy into test from @mystage;

如果您应用转换,它应该可以工作:

create or replace pipe test_pipe as -- works
copy into test from (select to_GEOGRAPHY($1) from @mystage);

alter pipe test_pipe refresh;

select * from test;

这是一个已知问题,将来会修复。

于 2021-09-02T11:59:00.540 回答