2011-06-02 87 views

回答

1

请谨慎使用 - 根据需要进行调整,并确保在复制结果并执行之前查看每个生成的查询(是 - 这会生成查询的结果集) - 因为这可能包括将尝试修改视图,计算字段,系统表等。

我是一个T-SQL'er - 但我相信下面应该在PostgresSQL中有效。

SELECT 'UPDATE ' || TABLE_SCHEMA || '.' || TABLE_NAME || 
     ' SET ' || COLUMN_NAME || ' = REPLACE(' || 
     COLUMN_NAME || ', ''FROM'', ''TO'')' 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE DATA_TYPE LIKE '%char%' 

有关更多信息,可提供有关如何调整这个查询,看看INFORMATION_SCHEMA.COLUMNS想法。

+2

您可能想要自己排除信息模式表 – Bohemian 2011-06-02 07:06:19

+0

@Bohemian - +1。事实上 - 和其他各种各样的'n'bobs - 我不是一个硬核Postgreser(?!) - 查询是一个起点,从复习输出而不是盲目执行会有很多好处! – 2011-06-02 07:08:16

1

这将列出数据库中的“性格”的所有列:

SELECT t.tablename, a.attname AS column_name 
FROM pg_attribute a 
JOIN pg_class c ON a.attrelid = c.oid 
JOIN pg_tables t ON t.tablename = c.relname 
JOIN pg_type on pg_type.oid = a.atttypid 
WHERE t.schemaname not in ('information_schema', 'pg_catalog') 
and pg_type.typname in ('varchar', 'text', 'char') 
order by 1,2; 

然后必须要经过,并做了更新。

+0

非常感谢。 但是,我呢? 我没有经验与SQL – 2011-06-02 10:44:55

相关问题