具有列别名的 PSQL 到 CSV 导致文件损坏
PSQL to CSV with column alias leads to corrupted file
我设法在 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 中直接读取导出的文件(当我不使用别名时会发生这种情况)?
在测试查询的各种其他配置后,我发现了问题。显然 Excel 将以 "ID" 开头的文件解释为某种 SYLK 格式而不是 CSV ...将列别名重命名为例如"MyID" 解决了这个问题。
此处参考:annalear.ca/2010/06/10/why-excel-thinks-your-csv-is-a-sylk
我设法在 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 中直接读取导出的文件(当我不使用别名时会发生这种情况)?
在测试查询的各种其他配置后,我发现了问题。显然 Excel 将以 "ID" 开头的文件解释为某种 SYLK 格式而不是 CSV ...将列别名重命名为例如"MyID" 解决了这个问题。
此处参考:annalear.ca/2010/06/10/why-excel-thinks-your-csv-is-a-sylk