当前位置: 首页 > 面试题库 >

如何使用PostgreSQL从表名获取列属性查询?

谢运良
2023-03-14
问题内容

我有一个项目,我需要一个查询以使用表名来获取所有列的所有属性(列名,位置,数据类型,非空值和注释)。

我实现了获取列名,位置数据类型和不为空?与此查询:

SELECT column_name, data_type, ordinal_position, is_nullable 
FROM information_schema."columns"
WHERE "table_name"='TABLE-NAME'

但是,我需要评论!


问题答案:

这是针对系统目录的查询,该系统目录应获取您需要的所有内容(免费提供额外的主键字段)。

SELECT DISTINCT
    a.attnum as num,
    a.attname as name,
    format_type(a.atttypid, a.atttypmod) as typ,
    a.attnotnull as notnull, 
    com.description as comment,
    coalesce(i.indisprimary,false) as primary_key,
    def.adsrc as default
FROM pg_attribute a 
JOIN pg_class pgc ON pgc.oid = a.attrelid
LEFT JOIN pg_index i ON 
    (pgc.oid = i.indrelid AND i.indkey[0] = a.attnum)
LEFT JOIN pg_description com on 
    (pgc.oid = com.objoid AND a.attnum = com.objsubid)
LEFT JOIN pg_attrdef def ON 
    (a.attrelid = def.adrelid AND a.attnum = def.adnum)
WHERE a.attnum > 0 AND pgc.oid = a.attrelid
AND pg_table_is_visible(pgc.oid)
AND NOT a.attisdropped
AND pgc.relname = 'TABLE_NAME'  -- Your table name here
ORDER BY a.attnum;

这将返回如下结果:

 num |    name     |             typ             | notnull |       comment       | primary_key 
-----+-------------+-----------------------------+---------+---------------------+-------------
   1 | id          | integer                     | t       | a primary key thing | t
   2 | ref         | text                        | f       |                     | f
   3 | created     | timestamp without time zone | t       |                     | f
   4 | modified    | timestamp without time zone | t       |                     | f
   5 | name        | text                        | t       |                     | f
  • num:列号
  • name:列名
  • typ:数据类型
  • notnull:列是否定义为 NOT NULL
  • 注释:COMMENT为该列定义的任何内容
  • primary_key:列是否定义为 PRIMARY KEY
  • default:用于默认值的命令


 类似资料:
  • 问题内容: 如果我有一个JSON.net用于绑定序列化JSON字符串中的数据的C#模型类,是否可以通过该类创建查询字符串以发出初始请求? 模型类示例: Querystring示例: 因此,我想做的本质是从模型对象中同时收集“ id”和“ some_string”,以便我可以动态创建“&fields”参数。谢谢! 问题答案: @Leigh Shepperson有正确的主意;但是,您可以使用LINQ用

  • 我正在尝试获取postgresql表的列名。我尝试过使用information_模式,但在我的javamvc项目中不起作用。我该怎么办? 这实际上是我关于StackOverflow的第一个问题,如果我的问题很难理解,我很抱歉。非常感谢。

  • 问题内容: 给定一个具有零个或多个属性的任意HTML元素,如何检索数据的键值对列表。 例如: 我希望能够以编程方式检索此: 使用jQuery(v1.4.3),如果事先知道键,则使用来访问数据的单个位很简单,但是使用任意数据集如何做到这一点并不明显。 我正在寻找一个“简单的”jQuery解决方案(如果存在),但不介意采用较低级别的方法。我可以尝试解析,但是缺少javascript-fu会让我失望。

  • 问题内容: 所以我正在写一个“ POJO to JSON”转换器。我希望能够传递一个对象并转换为JSON。 希望这会有意义 当我进入本节时,我是正确的。我可以调试它,并查看类的名称和值。 假设该类是这样的: 所以现在是一个站点。OK,然后我尝试获取字段名称(firstName,lastName),但是fields对象为空。 我究竟做错了什么? 谢谢 编辑 我知道了!这不是完成的代码,但它确实正在执

  • 问题内容: 我在访问SimpleXML对象的部分时遇到问题。当我整个对象时,我得到正确的输出,而当我其余对象(嵌套标签)时,我得到正确的输出,但是当我遵循docs和时 ,我得到一个空对象,尽管事实是第一个清楚地表明,存在要输出的属性。 任何人都知道我在这里做错了/如何进行这项工作? 问题答案: 您可以通过在XML节点上调用attribute()函数来获取XML元素的属性。然后,您可以var_dum

  • 问题内容: 我在Python列表中有一堆列名。现在,我需要将该列表用作语句中的列名称。我怎样才能做到这一点? 到目前为止,我有: 问题答案: 您无法传递要选择作为参数的列列表。它应该是您的SQL表达式的一部分,例如: 要注意的一件事是,SQL中参数值的占位符取决于数据库。如果不起作用,请尝试使用或。有关更多详细信息,请参见https://www.python.org/dev/peps/pep-02