小编Bo *_* S.的帖子

将包含 null 和空字符串的雪花表复制到可以使用 psql copy 命令导入的 csv

所以,如果 Snowflake 中有这张表:

create table t (x string, y string) as select '', null;

并且您使用 file_format csv 将其复制到外部阶段,如果您未将 field_optionally_enlined_by 设置为 none 以外的其他值,则会出现此错误:

如果未指定文件格式选项 field_optionally_enlined_by ,则无法卸载空字符串。

所以,假设它设置为“”。

create stage some_stg
url='s3://<some-bucket>/<some-dir>'
file_format = (type = csv field_optionally_enclosed_by='"' compression = none)
credentials = (aws_role = '<your-arn-for-snowflake>')
Run Code Online (Sandbox Code Playgroud)

如果您不想让 Snowflake 使用您的 s3 存储桶,我确信这个问题会在内部阶段重现。

当您运行上面的表 t 的副本时:

copy into @some_stg/t.csv from t overwrite = true;

您会得到一个如下所示的文件 (t_0_0_0.csv):

"","\N"

在 postgres 中创建等效表后:

create table t (x varchar, y varchar);

当您使用 psql 复制将其加载到 postgres 时,如下所示:

psql -h …

csv string postgresql null snowflake-cloud-data-platform

6
推荐指数
1
解决办法
2万
查看次数