【问题标题】:how to get column size and type through my database in PostgreSQL如何通过我在 PostgreSQL 中的数据库获取列大小和类型
【发布时间】:2011-05-27 04:24:11
【问题描述】:

我在以前的数据库中手动更改了列长度。

但是通过 HQL 创建新数据库后,它正在创建 varchar(255),我需要让它更长。

我需要找到我应该更改哪个表的列?

我可以手动找到它,但现在我有大约 200 个表,我需要一个查询来执行此操作。

如何使用 SQL 查询在 Postgres 中获取列类型及其长度?

【问题讨论】:

  • 在 Postgresql 中,您可以使用“varchar”(没有长度)或“text”(也没有长度)来创建一个文本字段来处理文本的长度。 Postgreql 很少需要固定宽度的文本字段,因为它可以优雅而高效地处理任意长度的字符串。
  • 是的,你是对的,性能上没有区别数据的大小呢

标签: sql postgresql pgadmin


【解决方案1】:

INFORMATION_SCHEMA 表将在这里为您提供帮助:

select *
from INFORMATION_SCHEMA.COLUMNS

您可以检查结果集中的table_namecolumn_namedata_typecharacter_maximum_length 列。

【讨论】:

    【解决方案2】:

    偶然发现了这个旧帖子。根据 RedFilter 的回答,这里是对原始问题的查询:

    select table_name, 
           column_name 
    from INFORMATION_SCHEMA.COLUMNS 
    where data_type = 'character varying' 
      and character_maximum_length = 200
    

    把它和alter table的语法放在一起:

    ALTER TABLE X ALTER COLUMN Y TYPE text;
    

    您可以通过运行此查询来生成您需要的所有命令:

    select 'ALTER TABLE ' || table_name || ' ALTER COLUMN ' || column_name || ' TYPE text;'  
    from INFORMATION_SCHEMA.COLUMNS 
    where data_type = 'character varying' 
      and character_maximum_length = 200;
    

    希望这对将来的某人有所帮助,或者至少可以节省他们一些时间!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-10
      • 1970-01-01
      • 2022-08-12
      • 2019-07-02
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多