【发布时间】:2011-12-02 17:54:12
【问题描述】:
有 1 列包含逗号。当我将查询输出到 csv 时,这些逗号会破坏 csv 格式。我一直在做的事情是避免这种情况很简单 replace(A."销售代表",',','')
有没有更好的方法可以让我在不破坏 csv 文件的情况下真正获得最终输出中的逗号?
谢谢!
【问题讨论】:
标签: postgresql
有 1 列包含逗号。当我将查询输出到 csv 时,这些逗号会破坏 csv 格式。我一直在做的事情是避免这种情况很简单 replace(A."销售代表",',','')
有没有更好的方法可以让我在不破坏 csv 文件的情况下真正获得最终输出中的逗号?
谢谢!
【问题讨论】:
标签: postgresql
您可以使用COPY command 让 PostgreSQL 为您构建 CSV:
COPY -- 在文件和表之间复制数据
类似于以下之一:
copy your_table to 'filename' csv
copy your_table to 'filename' csv force quote *
copy your_table to stdout csv force quote *
copy your_table to stdout csv force quote * header
...
您必须是超级用户才能复制到文件名。如果您在psql 内部,则可以使用\copy command:
执行前端(客户端)复制。这是一个运行 SQL COPY 命令的操作,但不是服务器读取或写入指定的文件,而是 psql 读取或写入文件并在服务器和本地文件系统之间路由数据。
语法几乎相同:
\copy your_table to 'filename.csv' csv force quote * header
...
【讨论】:
用"引用字段
a,this has a , in it,b
会变成
a,"this has a, in it",b
如果字段同时具有, 和",则将引号加倍:
a,this has a " and , in it,b
变成
a,"this has a "" and , in it",b
【讨论】:
select '"' || fieldname || '"' etc...