Snowflake cloud data platform 雪花:以多分隔符格式导出数据

Snowflake cloud data platform 雪花:以多分隔符格式导出数据,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,要求: 需要按以下格式导出文件,其中性别、年龄和兴趣是列,而后面的值是该列的数据:。这可以在使用Snowflake时实现吗?如果不能,是否可以使用Python导出数据 User1234^gender:male;age:18-24;interest:fishing User2345^gender:female User3456^age:35-44 User4567^gender:male;interest:fishing,boating 编辑1:demircioglu给出的解决方案 它显示为空值

要求:

需要按以下格式导出文件,其中性别、年龄和兴趣是列,而
后面的值是该列的数据:
。这可以在使用Snowflake时实现吗?如果不能,是否可以使用Python导出数据

User1234^gender:male;age:18-24;interest:fishing
User2345^gender:female
User3456^age:35-44
User4567^gender:male;interest:fishing,boating
编辑1:demircioglu给出的解决方案

它显示为空值,而不是其他列值

在EMPLOYEES表数据下方

当我在下面跑的时候

SELECT 'EMP_ID'||EMP_ID||'^'||'FIRST_NAME'||':'||FIRST_NAME||';'||'LAST_NAME'||':'||LAST_NAME FROM tempdw.EMPLOYEES  ;

使用所需格式创建SQL并将其写入文件

COPY INTO @~/stage_data
FROM 
(
SELECT 'User'||User||'^'||'gender'||':'||gender||';'||'age'||':'||age||';'||'interest'||':'||interest FROM table
)
file_format = (TYPE=CSV compression='gzip')
此处的文件格式并不重要,因为由于分隔符的要求,每一行都将被视为一个字段

编辑:
CONCAT
函数(别名为
|
)如果有空值,则返回空值。 为了消除空值,可以使用函数

因此,您的SQL将有一系列的
NVL2
s

NVL2检查第一个参数,如果不是NULL,则返回第一个表达式,如果为NULL,则返回第二个表达式

用户栏也是如此

“用户”将变成

NVL2(User,'User','')||NVL2(User,User,'')||NVL2(User,'^','')

另外,我将由您来创建SQL的其余部分,因为Stackoverflow的功能是帮助找到解决方案,而不是填鸭式地提供解决方案。

不,我认为Snowflake目前不支持这样的多个分隔符。支持多字节和多字符分隔符,但需要为记录或行指定相同的分隔符


是的,可以进行一些后处理或使用Python脚本来实现这一点。甚至SQL转换语句。这不是我的专业领域,所以如果有人给你举了一个例子,我会让他们加入讨论。

例如,如果某行没有特定列的数据,比如年龄和兴趣,它必须输出为
User2345^gender:female
请检查更新的原始问题我已经用您的解决方案运行了查询,但给出了NULLUpdated的答案,以使用NVL2函数消除NULLs