Postgresql 使用分隔符自动连接所有列

Postgresql 使用分隔符自动连接所有列,postgresql,Postgresql,我有几位顾客: ID Code Name 1 10 Marry 我想得到的结果是: 1^10^Marry 但我不想这样明确地命名每一列: select ID||^||Code||^Name from Customers 有什么建议吗 关于您的唯一选择是: COPY Customers TO stdout WITH DELIMITER '^' CSV; 因此,在升级之前,这应该会对您有所帮助。您只能指定要复制的列的子集,或从选定的。。。查询是否不需要整个表,例如:

我有几位顾客:

 ID   Code Name
 1    10   Marry 
我想得到的结果是:

  1^10^Marry
但我不想这样明确地命名每一列:

select ID||^||Code||^Name 
from Customers

有什么建议吗

关于您的唯一选择是:

COPY Customers TO stdout WITH DELIMITER '^' CSV;
因此,在升级之前,这应该会对您有所帮助。您只能指定要复制的列的子集,或从选定的。。。查询是否不需要整个表,例如:

COPY Customers("ID") TO stdout WITH DELIMITER '^' CSV;

但这会将任何逗号转换为^,因此如果您的名称字段包含Doe,John,您将得到Doe^John作为输出-可能不是您想要的。Pg将引用包含逗号的字段,但替换将不尊重该引用。如果您足够努力,您可能会想出一个regexp_replace表达式;您还必须处理字符串中的文本导致输出的情况。看

我原本以为您可能只是想摆脱| |运算符,在这种情况下,如果您不使用如此旧版本的PostgreSQL,这会有所帮助:

SELECT concat_ws('^', "ID", "Code", "Name") FROM Customers;
另外,请注意,上面的复制语法是过时的样式。现代PostgreSQL版本上的新代码应使用:

COPY Customers TO stdout WITH (FORMAT CSV, DELIMITER '^')

相反。这在8.3中对您不起作用,它太旧了。

Me不能使用PostgreSQL 8.3。这不是错误。但我不想使用它。我想使用自动。我在表中有sql get列:从信息模式列中选择列名称,其中表模式='medibv'vn'和表名称='Customers'Me使用PostgreSQL 8.3。这不是错误。但我不想使用它。我想使用自动。我有sql get列表:从信息_schema.columns中选择列_name,其中表_schema='medibv\u vn'和表_name='Customers'。我不想将列名写入select。我希望它自动获取列名和值。请,谢谢!你只是把你的问题改成了完全不同的意思。请针对新问题发布新问题。我已经把你的零钱换了。@user2281426很高兴能帮上忙。请在计时器允许时标记为已接受;看见另外,开始计划从8.3升级到受支持的版本,特别是如果你想寻求他人的帮助;你会得到很多对你的版本不起作用的答案;但它永远在运行,而不是停止。你能帮我吗?谢谢!。我正在使用postgres 8。3@user2281426使用哪个客户端?psql?如果你复制。。。到“/tmp/test.csv”是否完成,如果完成,服务器上是否会显示/tmp/test.csv文件?
SELECT concat_ws('^', "ID", "Code", "Name") FROM Customers;
COPY Customers TO stdout WITH (FORMAT CSV, DELIMITER '^')