标签: catalogs

列出指定表的所有列

我正在数据库中寻找一条我不了解的精确信息。数据库在一台单独的机器上,但我可以登录它,并psql以管理员权限启动命令行。

这是第三方产品,他们回答问题的速度很慢。我知道数据在那个数据库里面,所以我想做一点逆向工程。

给定一个表名,是否可以获得该表中列名的列表?

例如,在 SQL Server 中,可以将表转储到可重用CREATE语句中,该语句以文本方式列出了该表所包含的所有列。

postgresql metadata information-schema catalogs

386
推荐指数
5
解决办法
74万
查看次数

查询以输出查询、表或视图的列名和数据类型

是否有 PostgreSQL 查询或命令返回查询、表或视图的字段名称和字段类型?

例如,如果应用于简单的 SELECT 查询的解决方案SELECT * from person应该返回如下列表:

Column Name   | Column Type
===========================
First Name    | character
Last Name     | character
Age           | integer
Date of Birth | date
Run Code Online (Sandbox Code Playgroud)

我查看了information_schema下面的答案中描述的视图,它似乎很好地涵盖了表格,我怀疑它也涵盖了视图,但我还没有检查过。

最后一个是任意但有效的 SELECT 查询,例如涉及数据库中的JOINS、 UNIONS等。是否有内置过程或其他存储过程或脚本可以为任何有效的 QUERY 返回相同的结果?

我正在开发一个程序来创建数据和查询表单,数据验证和对返回的数据执行函数需要这些信息。

postgresql datatypes catalogs fields

26
推荐指数
1
解决办法
14万
查看次数

显示用户定义的类型及其详细信息

我在 PostgreSQL 中创建了一些新的 UDT。但是,现在我有两个问题:

  1. 如何查看定义了哪些 UDT?
  2. 如何查看这些 UDT 中定义的列?

不幸的是,我在 PostgreSQL 文档中找不到任何相关内容。

postgresql catalogs user-defined-type

23
推荐指数
3
解决办法
3万
查看次数

检查 postgresql 数据库是否存在(不区分大小写的方式)

是否有一种“优雅的内置”不区分大小写的方式来检查 db 是否存在?

我只找到了SELECT datname FROM pg_catalog.pg_database WHERE datname='dbname',但这是 CS 检查。想到的第一件事是检索所有数据库名称并手动过滤它们,但我认为有更优雅的方法来做到这一点。

postgresql catalogs

12
推荐指数
2
解决办法
3万
查看次数

如何使用 PLPGSQL 确定当前 search_path 中是否存在表?

我正在为一个应用程序编写一个安装脚本,该脚本是另一个应用程序的插件,所以我想检查另一个应用程序的表是否存在。如果没有,我想给用户一个有用的错误。但是,我不知道什么模式将保存这些表。

DO LANGUAGE plpgsql $$
BEGIN
    PERFORM 1
    FROM
        pg_catalog.pg_class c
        JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
    WHERE
        n.nspname = current_setting('search_path')
        AND c.relname = 'foo'
        AND c.relkind = 'r'; -- not sure if I actually need this or not...

    IF NOT FOUND THEN
        RAISE 'This application depends on tables created by another application';
    END IF;
END;
$$;
Run Code Online (Sandbox Code Playgroud)

但是,current_setting('search_path')返回"$user",public默认包含的 TEXT ,这不是很有用。

我唯一能想到的另一件事是尝试从表中选择并捕获异常。它可以完成这项工作,但我认为它不是很优雅,而且我读到它使用起来很昂贵(尽管在这种情况下可能没问题,因为我只运行一次?)。

postgresql plpgsql catalogs

12
推荐指数
1
解决办法
3万
查看次数

在 SSIS 目录中查看执行报告的权限

我们目前正在使用 SSIS 2012。有没有办法让用户在没有 ssis_admin 或 sysadmin 的情况下查看 SSIS 目录下的执行报告?

这是针对生产环境的,我们不希望人们操纵 SSIS 目录项目。

谢谢!

permissions catalogs ssis-2012

9
推荐指数
2
解决办法
2万
查看次数

恢复所有数据库脚本

我正在将 SQL Server DB 迁移到新实例。

有人告诉我,可以从系统目录中的可用备份动态构建 RESTORE 脚本。

有谁知道一个示例脚本来做到这一点?

谢谢!

sql-server scripting restore catalogs automation

7
推荐指数
1
解决办法
1万
查看次数

Postgres 中数组列的内部连接

在 Postgres 9.4 中,我试图提取UNIQUEPostgres 中给定表的约束中涉及的所有列的名称。

看起来此类列的名称包含在pg_constraint. 根据文档,与我的问题相关的列称为conkey,它恰好是一个ints数组。

关键是,我提出的查询给了我错误的结果,我很确定这是因为我conkey以错误的方式加入。查询如下:

SELECT
    pg_attribute.attname,
    pg_constraint.*
FROM
    pg_attribute
INNER JOIN pg_constraint 
        ON pg_attribute.attnum = ANY (pg_constraint.conkey)
WHERE pg_constraint.conrelid = (
    SELECT
        oid
    FROM
        pg_class
    WHERE
        relname LIKE 'test_table'
)
AND pg_constraint.contype = 'u'; -- to filter out non-unique constraints
Run Code Online (Sandbox Code Playgroud)

这是一个用于快速重现的表 DDL:

CREATE TABLE "test_table" (
"date" date DEFAULT now() NOT NULL,
"foo" varchar COLLATE "default" NOT NULL
CONSTRAINT "test_table_foo_key" UNIQUE ("foo")
) …
Run Code Online (Sandbox Code Playgroud)

postgresql join array catalogs

7
推荐指数
1
解决办法
1万
查看次数

如何列出所有索引及其类型(BTREE、BRIN、HASH 等...)

我正在查询 Postgresql 9.6.4 中的系统目录

获取表的结果集及其索引很简单,我缺少的是索引类型(BTREE、BRIN 等)。我似乎无法在系统目录中的任何位置找到索引类型。

如何查询目录以获取索引列表及其类型?

postgresql catalogs system-tables postgresql-9.6

6
推荐指数
1
解决办法
2960
查看次数

SQL Server 2017中如何直接修改系统目录?

注意:我了解所涉及的风险,以及这样做可能会破坏生产系统。反正我有兴趣去做。

每当我尝试使用系统目录时,都会遇到这些奇怪的错误,

UPDATE sys.sql_logins
SET password_hash = PWDENCRYPT('pass')
WHERE name = 'sa';
Run Code Online (Sandbox Code Playgroud)

错误产生,

消息 259 [...]不允许对系统目录进行临时更新。

我尝试了很多方法来取下训练轮,

sp_configure 'allow updates',`
go
reconfigure
go
Run Code Online (Sandbox Code Playgroud)

但是,我想不出正确的选择......

它甚至在这个答案中说:

这不再可能(至少除了sp_configure选项之外,还需要跳过大量额外的箍- 这不是您想要在生产系统上做的事情),并且所有系统目录现在都通过只读视图公开像 sys.objects。

好吧,如果我想跳过这些箍怎么办。我该怎么做?

sql-server linux catalogs system-tables sql-server-2017

6
推荐指数
1
解决办法
7364
查看次数