带有列别名的PSQL到CSV会导致文件损坏

时间:2017-01-26 11:20:52

标签: excel postgresql csv copy psql

我设法在Windows上使用PSQL将SQL查询直接导出到CSV文件中,只要我不使用别名重新定义列名(使用AS),一切正常。

但是只要我使用列别名,例如:

\copy (SELECT    project AS "ID" FROM    mydb.mytable WHERE  project > 15 ORDER BY project)  TO 'C:/FILES/user/test_SQL2CSV.csv' DELIMITER ',' CSV HEADER

我对CSV文件有意外行为。

  • 在Excel中:CSV已损坏且为空白
  • 在记事本中:数据存在,但没有分隔符或空格 (续,例如ID27282930 ......)
  • 在Notepad ++中:数据在一列
  • 中组织得很好

(例如

ID
27
28
29
30
...

有没有什么可以直接在Excel中读取导出的文件(当我不使用别名时会发生这种情况)?

1 个答案:

答案 0 :(得分:1)

在测试查询的各种其他配置后,我发现了问题。显然,Excel将以“ID”开头的文件解释为某种SYLK格式而不是CSV ...将列别名重命名为例如“MyID”解决了这个问题。

参考此处:annalear.ca/2010/06/10/why-excel-thinks-your-csv-is-a-sylk