13

我正在将查询(应用程序 pgAdmin)的每个结果复制到 Google 文档表中。

我想知道是否可以将 Postgres 设置为输出选项卡而不是分号;来分隔列中的值 - 我想简单地从 Postgres 复制并粘贴到 Google Docs 表。

如果不可能,有没有办法在 Google Docs 表中编写宏?

我想再问一个问题 - 我如何划分使用 select 命令获得的两个值(以及如何要求 Postgres SQL 将值存储为例如 double)?

4

9 回答 9

7

由于Apps Script 中的 JDBC还不支持 Postgres(出于某种原因),因此您不能直接在 Google Sheets 中编写脚本。您绝对可以使用 Google Sheets API和您选择的语言编写此脚本(例如 Python 和 Pandas 使这成为一项相对简单的任务)。

如果您不想推出自己的解决方案,请查看SeekWell。它允许您直接在表格中连接到数据库并编写 SQL 查询。您可以创建一个运行“运行表”,它会一次运行多个查询,并安排这些查询在您甚至不打开工作表的情况下运行。

免责声明:我做了这个。

于 2018-01-12T23:09:17.907 回答
6

在 PGAdmin 4 中,您可以通过执行 sql 查询然后按 F8 来实现此目的,它将导出查询结果。

步骤1: 在此处输入图像描述

第二步:现在选择查询结果,点击下载CSV格式的查询结果,如下图:

在此处输入图像描述

第三步:验证查询结果

在此处输入图像描述

你完成了。

于 2017-07-09T17:02:07.053 回答
4

现在可以将 PgAdmin3 配置为使用 Tab 作为字段分隔符而不是 ;

在 PgAdmin3 主窗口中:

  • 文件
  • 选项
  • 查询工具部分
    • 结果网格区域
      • 单击“结果复制字段分隔符”旁边的下拉菜单
      • 从选择列表中选择“标签”

PgAdmin 选项屏幕的屏幕截图

您可能必须重新启动 PgAdmin 才能使其生效。非常适合直接粘贴到 Google 电子表格中!

关于您的除法问题,如果您只是将两个数字相除,您可能并不总是得到您期望的结果 - 整数不会自动除法并成为浮点结果 - 您必须将它们转换:

select 1::numeric/2::numeric

这将返回 0.50

然而:

select 1/2

返回 0(通常不是你想要的)

于 2014-02-12T02:32:35.533 回答
3

psql可以通过多种方式做到这一点:

% psql -At -F, -c 'SELECT * FROM my_table'
1,login,http://stackjet.com/login
2,mod3,https://127.0.0.1:5000/mod3/
3,mod2,http://127.0.0.1:5000/mod2/
4,logout,https://127.0.0.1:5000/logout

逃逸是该方案的一个问题。COPY是你的朋友。

于 2011-06-02T18:30:29.483 回答
2

使用出口能力。

于 2011-06-02T14:18:01.397 回答
2

将输出保存COPY或保存\copy.tsv文件并使用文件/导入加载该文件。或者,您可以以相同的方式使用 CSV 格式。

于 2011-06-02T18:57:49.937 回答
2

也许这样的东西可能有用:)

select relname || chr(9) || reltype || chr(9) || relam from pg_class
于 2011-06-02T14:54:01.240 回答
1
  • 如果不可能,有没有办法在 Google Doc 的工作表中编写宏?

不幸的是,宏不这样做。如果要编写自己的脚本,则必须使用应用脚本,但应用脚本 JDBC 不支持 postgres,因此您必须构建自己的查询服务器。

您还可以使用 Castodia、Seekwell 和 Kpibees 等插件。你可以在这里找到它们

  • 我想再问一个问题 - 我如何将使用 select 命令得到的两个值相除...

如果您想将数据库数据与工作表同步,然后更改该数据,最好的办法是添加一个单独的列并使用公式(例如:=A1/2)。如果您使用插件,您可能需要先检查数据是如何更新的,这样它就不会覆盖所有列。自从我工作以来,我只能为Castodia插件说话。当它更新您的工作表时,它只会更新包含数据的列。因此,如果您有“年龄、职业、收入”列,它只会覆盖这 3 列,因此您可以安全地使用公式添加第四列。

  • ...(以及如何要求 Postgres SQL 将值存储为例如 double)?

列的数据类型存储在 Postgres 数据库中,因此如果将数据存储为文本,它将以文本形式返回。但是,您可以将列设置为工作表中的特定类型。选择您的列,转到“格式”并选择“数字”。之后,当数据更新时,列将保持所需格式,除非更新工作表的脚本也更改列格式,因此请务必先检查。Castodia 脚本不会更改列格式,因此此解决方案应至少与一个插件一起使用。

于 2020-06-23T20:15:25.207 回答
-1

我会使用 vanilla SQL 执行您的插入/插值,然后使用QueryClips 之类的工具将您的数据放入 Google 工作表中。

于 2017-09-08T19:33:48.357 回答