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步:
步骤2:现在选择查询结果,然后单击CSV格式的下载查询结果,如下所示:
步骤3:验证查询结果
大功告成
现在可以将PgAdmin3配置为使用Tab作为字段分隔符(而不是;)复制/粘贴。
在PgAdmin3主窗口中:
- 文件
- 选件
-
查询工具部分
-
结果网格面积
- 点击"结果副本字段分隔符"旁边的下拉菜单
- 从选择列表中选择"选项卡"
-
结果网格面积
您可能必须重新启动PgAdmin才能生效。非常适合直接粘贴到Google电子表格中!
关于除法问题,如果仅将两个数相除,则可能不会总是得到期望的结果-整数不会自动除以并成为浮点结果-您必须将其转换为:
1 | SELECT 1::NUMERIC/2::NUMERIC |
这将返回0.50
鉴于:
1 | SELECT 1/2 |
返回0(通常不是您想要的)
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 |
转义是该方案的问题。
使用导出功能。
将
也许这样的事情可能是有用的:)
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表格。