2011-06-02 38 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

相關問題