【问题标题】:Export CSV From Postgres VIA Command Line从 Postgres VIA 命令行导出 CSV
【发布时间】:2020-04-21 14:14:16
【问题描述】:

你好 Stack Overflowers! 我目前正在使用我开发的 C# 应用程序将 Postgres 表导出为 .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

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

【问题讨论】:

  • 你能否展示你的CSV的样本行,它不需要有实际的真实数据,只要确保数据类型准确。您可能需要进行查询以输出仅包含要导出为文本的数字的 varchar 字段
  • 旁注:也许标题不太好。
  • 是的,应该只需要几分钟。
  • 在这里查看superuser.com/q/318420 这个帖子可能会为您的问题提供一些启示。
  • @JorgeCampos 确实可以解决问题。但是,我的理解是我必须将记录值更改为 ="number" 才能正确导出?

标签: postgresql tableau-api psql


【解决方案1】:

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

不过,@JorgeCampos 的链接提供了有用的信息。例如

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

得到的解释不同于

123,123

当您将其加载到 Excel 中时。

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

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

【讨论】:

  • 我相信我会用这个方法。我认为您还必须添加 = 才能使其正常工作。我也尝试了@Jorge Campos 第二个建议 FORCE_QUOTE 但是,它不会将 = 添加到开头只是 "" 这可能会导致问题。
猜你喜欢
  • 1970-01-01
  • 2015-04-20
  • 2020-06-01
  • 2014-09-29
  • 2015-08-02
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
  • 1970-01-01
相关资源
最近更新 更多