关于剪贴板:从PostgreSQL复制结果

copy result from PostgreSQL

我正在将查询(应用程序pgAdmin)的每个结果复制到Google文档的工作表中。
我想知道是否可以将Postgress设置为插入Tab而不是分号(;)来分隔列中的值-我想简单地将Postgres复制并粘贴到Google Doc的工作表中。

如果不可能,是否可以在Google文档的工作表中编写宏?

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


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

如果您不想推出自己的解决方案,请查看SeekWell。它允许您连接到数据库并直接在Sheets中编写SQL查询。您可以创建一个"运行表"运行,该运行表将一次运行多个查询,并计划在不打开表的情况下运行这些查询。

免责声明:我做到了。


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

第1步:
enter image description here

步骤2:现在选择查询结果,然后单击CSV格式的下载查询结果,如下所示:

enter image description here

步骤3:验证查询结果

enter image description here

大功告成


现在可以将PgAdmin3配置为使用Tab作为字段分隔符(而不是;)复制/粘贴。

在PgAdmin3主窗口中:

  • 文件
  • 选件
  • 查询工具部分

    • 结果网格面积

      • 点击"结果副本字段分隔符"旁边的下拉菜单
      • 从选择列表中选择"选项卡"

Screenshot of PgAdmin Options screen

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

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

1
SELECT 1::NUMERIC/2::NUMERIC

这将返回0.50

鉴于:

1
SELECT 1/2

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


psql可以通过多种方式执行此操作:

1
2
3
4
5
% 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是您的朋友。


使用导出功能。


COPY\\copy的输出另存为.tsv文件,并使用文件/导入加载。另外,您可以以相同方式使用CSV格式。


也许这样的事情可能是有用的:)

1
SELECT relname || chr(9) || reltype || chr(9) || relam FROM pg_class

  • 如果不可能,是否可以在Google文档的工作表中编写宏?

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

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

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

如果要将数据库数据与图纸同步然后更改该数据,最好的选择是添加一个单独的列并使用公式(例如:= A1 / 2)。如果您使用的是插件,则可能需要先检查数据的更新方式,以免覆盖所有列。自从我从事这项工作以来,我只能代表Castodia插件。更新工作表时,它只会更新包含数据的列。因此,如果您有"年龄,职业,收入"列,它将仅覆盖这3列,因此您可以安全地用公式添加列。

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

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


我会使用香草SQL执行插入/内插,然后使用QueryClips之类的工具将您的数据放入Google表格。