gpt4 book ai didi

mysql - 如何在 PostgreSQL 中只获取数据库的表名

转载 作者:行者123 更新时间:2023-11-29 06:27:55 24 4
gpt4 key购买 nike

我有几个查询 mysql 数据库并获取表名的 bash 脚本,我使用以下命令:

mysql -NBA --user=$DB_user --password=$DB_pass --database=$DB_name -e 'show tables'

使用 -NBA 参数,我过滤结果并得到如下内容:

    categories
colections
colors
files

在带有 psql 的 postgreSQL 中,我正在尝试实现相同的格式,我正在阅读文档并使用以下参数:

psql --username=$DB_user -W --host=$HOST --dbname=$DB_name -Atc '\dt'

这是我能得到的最好的

    public|categories|table|user
public|colections|table|dbuser
public|colors|table|dbuser
public|files|table|dbuser

在最坏的情况下,我需要解析它以仅获取表的名称,但如果有人知道实现我想要的方法,我会很高兴。

最佳答案

此 SQL 查询获取所需信息(或其任何变体):

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public' -- mysql does not have schemas
ORDER BY 1;

所以从 shell 中:

psql --username=$DB_user -W --host=$HOST --dbname=$DB_name -Atc 'SELECT table_name FROM information_schema.tables WHERE table_schema = \'public\' ORDER BY 1'

您可能想使用 quote_ident(table_name) 来获取转义的表名:

;从用户中删除; -- 变为 ";DELETE FROM users; --"

请注意,您只能获得当前用户有权访问的表名。关于信息模式和系统目录:

关于mysql - 如何在 PostgreSQL 中只获取数据库的表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29809474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com