如何通过PostgreSQL SQL生成格式正确的CSV行?
PostgreSQL生成格式正确的CSV行方法
当然可以,PostgreSQL自带专门的函数来生成标准CSV格式,比手动用concat拼接靠谱多了,能自动处理逗号、引号的转义问题。
常用实现方式
PostgreSQL 12+ 推荐用
to_csv函数:
直接将整行数据转为标准CSV格式,自动处理所有特殊字符转义:SELECT to_csv(t) FROM t;比如字段值包含双引号时会自动转义为两个双引号,字段含逗号时会用双引号包裹整个字段,完全符合CSV规范。
PostgreSQL 15+ 用
format_csv指定字段:
若只需将特定字段拼接成CSV行,可传入字段数组给format_csv:SELECT format_csv(ARRAY[a, b]) FROM t;该函数会自动对数组中的每个元素做CSV转义处理,输出正确的单行CSV内容。
老版本兼容方案(PostgreSQL <12):
用quote_nullable处理每个字段后,再用concat_ws拼接逗号:SELECT concat_ws(',', quote_nullable(a), quote_nullable(b)) FROM t;quote_nullable会给含特殊字符的字段套双引号,转义内部的双引号,同时将NULL值转为CSV标准的空字符串。
注意:手动用concat(a,',',b)这类方式拼接很容易出错,比如字段本身包含逗号或双引号时,生成的CSV会出现格式错误,强烈建议使用官方提供的CSV专用函数。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

