我正在使用带有pgadmin的PostgreSQL。 我需要在string类型的所有字段中替换多个字符,并在数据库的所有表中替换。
答案 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;
然后你必须经历并进行更新。