所以,如果 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 …