替换Database Postgres中所有表中的字符

时间:2011-06-02 06:49:34

标签: sql replace character

我正在使用带有pgadmin的PostgreSQL。 我需要在string类型的所有字段中替换多个字符,并在数据库的所有表中替换。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;

然后你必须经历并进行更新。