在我正在研究的PostgreSQL数据库中,有一半的表有一个特定的列,总是名称相同,类型为varchar(5)。大小变得有点过于限制,我想将其更改为varchar(10)。
在我的特定情况下,表的数量实际上非常易于手动完成。但我想知道如何通过查询更大的dbs来编写脚本。通常应该只需几步即可。
我对如何编写标识模式中所有表的查询有所了解。但我不知道如何过滤它们。如果我没有过滤它们,我认为生成的alter table语句会破坏。
如果有人可以分享他们的知识,那将会很棒。
答案 0 :(得分:1)
感谢Abelisto提供一些指导。最终,这就是我做到的。
首先,我创建了一个查询,然后创建ALTER TABLE
语句。 MyDB
和MyColumn
需要反映实际值。
SELECT
'ALTER TABLE '||columns.table_name||' ALTER COLUMN '||MyColumn||' TYPE varchar(20);'
FROM
information_schema.columns
WHERE
columns.table_catalog = 'MyDB' AND
columns.table_schema = 'public' AND
columns.column_name = 'MyColumn';
然后,只需将输出作为新查询执行即可。全部完成。