String 将带有null和空字符串的雪花表复制到可以使用psql copy命令导入的csv
所以,如果你有这个雪花表:String 将带有null和空字符串的雪花表复制到可以使用psql copy命令导入的csv,string,postgresql,csv,null,snowflake-cloud-data-platform,String,Postgresql,Csv,Null,Snowflake Cloud Data Platform,所以,如果你有这个雪花表: 将表t(x字符串,y字符串)创建为select“”,null 如果您将其复制到文件格式为csv的外部后台,如果您没有将字段设置为非“无”,则会出现此错误: 如果未指定“文件格式选项”字段,\u(可选地\u括起来,\u),则无法卸载空字符串 那么,假设它被设置为'' 现在这是有意义的,因为snowflake将\N放在双引号中,因此psql副本保留了它。如果编辑t\u 0\u 0.csv并删除\N周围的双引号: ,\N 然后再次运行psql copy,然后\N将正确转换为
将表t(x字符串,y字符串)创建为select“”,null代码>
如果您将其复制到文件格式为csv的外部后台,如果您没有将字段设置为非“无”,则会出现此错误:
如果未指定“文件格式选项”字段,\u(可选地\u括起来,\u),则无法卸载空字符串
那么,假设它被设置为''
现在这是有意义的,因为snowflake将\N放在双引号中,因此psql副本保留了它。如果编辑t\u 0\u 0.csv并删除\N周围的双引号:
,\N
然后再次运行psql copy,然后\N将正确转换为null
似乎没有一种方法可以从snowflake生成csv文件,该文件支持空字符串和null,可以在加载到postgres时保留。我搞乱了snowflake将空的\u字段\u配置为\u null和null\u,如果在snowflake的文档中它甚至提到了这个问题:
When unloading empty string data from tables, choose one of the following options:
Preferred: Enclose strings in quotes by setting the FIELD_OPTIONALLY_ENCLOSED_BY option, to distinguish empty strings from NULLs in output CSV files.
它确实“区分”了它们,但不是以psqlcopy可以使用的方式,而无需事先使用sed操作文件
有人知道如何生成雪花csv,以psql copy可以复制的方式保留空字符串和NULL吗?您是否尝试过在文件格式中使用NULL\u IF选项,以下文件格式将卸载带有空字符串的雪花NULL数据
CREATE OR REPLACE FILE FORMAT UPDATED_FORMAT_NAME
TYPE = 'CSV'
COMPRESSION = 'NONE'
FIELD_DELIMITER =','
NULL_IF=()
太棒了。所以空值用no值表示,这是psqlcopy的输入csv文件_格式解释空值的默认值。非常好。谢谢。
When unloading empty string data from tables, choose one of the following options:
Preferred: Enclose strings in quotes by setting the FIELD_OPTIONALLY_ENCLOSED_BY option, to distinguish empty strings from NULLs in output CSV files.
CREATE OR REPLACE FILE FORMAT UPDATED_FORMAT_NAME
TYPE = 'CSV'
COMPRESSION = 'NONE'
FIELD_DELIMITER =','
NULL_IF=()