通过命令行从 Postgres 导出 CSV

Export CSV From Postgres VIA Command Line

你好堆栈溢出! 我目前正在使用我开发的 C# 应用程序将 Postgres table 导出为 .csv。我可以使用以下命令毫无问题地导出它们...

set PGPASSWORD=password
psql -U USERNAME Database_Name
\copy (SELECT * FROM table1) TO C:\xyz\exportfile.csv CSV DELIMITER ',' HEADER;

我 运行 遇到的问题是 .csv 旨在与 Tableau 一起使用,但是,当导入到 excel 时,我 运行 遇到了同样的问题。它将 Tableau 和 Excel 中的文本字段转换为整数。这会导致在 Tableau 端加入序列号时出现问题。

我知道我可以手动更改 Tableau/Excel 中的这些字段,但我正在尝试找到一种方法来确保最终用户不需要这样做。我希望他们只需拖放更新的 .csv postgresql 数据提取,就可以毫无问题地启动 Tableau。他们似乎并不真正精通技术。我知道您可以将 Tableau 直接连接到 Postgres,但在这种特殊情况下,由于我无法控制的限制,我不允许这样做。

我正在使用 PostgreSQL 12 和 Tableau v2019.4.0

编辑:根据要求提供示例数据!这两个字段在 PostgreSQL 中都是 TEXT,但导出没有指定。

Excel Formatting
ASSETNUM,ITEMNUM
1834,8.11234E+12
1835,8.11234E+12

Notepad Formatting
ASSETNUM,ITEMNUM
1834,8112345673294
1835,8112345673295

注意:如果您 select Excel 中的特定单元格,它会显示完整的数字。

CSV 文件没有任何类型信息,因此像 Excel/Tableau 这样的程序可以随意解释数据。

但是,@JorgeCampos 的 link 提供了有用的信息。例如

"=""123""","=""123"""

得到的解释不同于

123,123

当您将其加载到 Excel 时。

如果你想在数据中添加引号,最简单的方法是使用 PostgreSQL 的 string functions,例如

SELECT '"=""' || my_column || '"""' FROM my_database