当前位置: 首页 > 知识库问答 >
问题:

用于脚本编写的postgres中的list命令的替代方法

谢华彩
2023-03-14
                                          List of databases
          Name           |   Owner    | Encoding |   Collate   |    Ctype    |   Access privileges
-------------------------+------------+----------+-------------+-------------+-----------------------
 firstdb                 | postgres   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
 secnddb                 | scnduser   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
 thrddb                  | scnduser   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
 postgres                | postgres   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |
 template0               | postgres   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 | =c/postgres          +
                         |            |          |             |             | postgres=CTc/postgres
 template1               | postgres   | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 | =c/postgres          +
                         |            |          |             |             | postgres=CTc/postgres
(6 rows)

暗示即使有一些选择,我也不能让它消失:

$ psql -Atlqn
firstdb|postgres|UTF8|de_DE.UTF-8|de_DE.UTF-8|
secnddb|scnduser|UTF8|de_DE.UTF-8|de_DE.UTF-8|
thrddb|scnduser|UTF8|de_DE.UTF-8|de_DE.UTF-8|
postgres|postgres|UTF8|de_DE.UTF-8|de_DE.UTF-8|
template0|postgres|UTF8|de_DE.UTF-8|de_DE.UTF-8|=c/postgres
postgres=CTc/postgres
template1|postgres|UTF8|de_DE.UTF-8|de_DE.UTF-8|=c/postgres
postgres=CTc/postgres

问题是,有没有其他方法可以像\list打印数据库列表那样获取数据库列表,这样我就可以在脚本中使用它来解析,例如awk?

共有1个答案

白云
2023-03-14

有趣的问题。您正被ACL条目中的硬换行所困扰。顺便说一句,这些并不是它们出现的唯一地方,只是最常见的地方。

为什么不使用不同的记录分隔符呢?空字节(\0)可以很好;这就是-0选项的用途。但是,只有当您的客户端能够处理空字节时,它才有用;对xargs-0很好,对其他很多东西不好。空字节的方便之处在于它不会出现在psql的输出中,否则就不会有冲突的风险。gawk确实支持空分隔记录,尽管它的文档记录很少。

尝试,例如:

psql -Atlqn -0  | gawk -vRS=$'\0' '{ gsub("\n", " "); print }
 CREATE DATABASE "my
 database";
 CREATE DATABASE "$(rm -rf /gladthisisnotroot);";

 CREATE DATABASE "$(createuser -l -s my_haxxor -W top_secret)"
 类似资料:
  • 问题内容: 我希望批量编写一些脚本,这将需要在Linux上运行远程ssh命令。我希望返回输出,以便可以在屏幕上显示或记录它。 我尝试过,但屏幕上没有返回任何内容。 有人做过吗? 问题答案: PuTTY 的切换将 脚本文件 的 路径 作为参数而不是 command 。 参考:https : //the.earth.li/~sgtatham/putty/latest/htmldoc/Chapter3.

  • 我正在使用脚本模式(一种groovy脚本)与Katalon Studio创建一个测试用例。我需要那个groovy脚本来执行将位于Katalon项目文件夹中。 出于测试目的,我创建了一个. jar,它创建了一个名为"the-file-name"的文件,并在控制台中打印一条消息。 我找到了在Groovy中执行命令的方法: 这会在Katalon控制台中打印git的版本。所以我猜放上“java-jar t

  • 本文向大家介绍python脚本内运行linux命令的方法,包括了python脚本内运行linux命令的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python脚本内运行linux命令的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的Python程序设计有所帮助。

  • 本文向大家介绍在CMD命令行中运行python脚本的方法,包括了在CMD命令行中运行python脚本的方法的使用技巧和注意事项,需要的朋友参考一下 网上给出了各种方法,都无碍乎先切换到Python脚本所在目录,然后输入Python脚本名称并回车,本文这里给出了更简便的方法。 方法一: 进入Python脚本所在的文件夹,shift+右击,选择“在此处打开命令窗口”,按TAB键切换文件,选择目标pyt

  • 问题内容: 如何使用诸如ruby之类的脚本语言来驱动调试会话?有没有比使用Expect或脚本语言类似的模块更简单的选择? 问题答案: 您也许可以使用JRuby通过JPDA API 来驱动自己的调试器。

  • 我是android新手,正在处理一个广播互联网连接状态的应用程序。我使用了一个不推荐使用的方法isConnectingOrConnected()。我无法修复我的代码,它令人困惑。请查看我的代码并帮我解决问题。真心感谢任何帮助 这是我的连接接收器代码 这是我的主要活动