PostgreSQL批量修改列名大小寫

2021-10-14 16:56:31 字數 1741 閱讀 7564

在postgresql中預設是大小寫敏感的,並缺省會將sql語句轉化為小寫。

今天碰到同事在gp裡面建表的時候給列名加上引號,如下:

create

table t3(

"id"

int,

"info"

text

);

這樣會導致將列名變成了大寫,那麼如果直接查詢就會報錯:

bill@bill

=>

select id from t3;

error: column

"id" does not exist

line 1: select id from t3;

^bill@bill

=>

select id from t3;

error: column

"id" does not exist

line 1: select id from t3;

^

結果同事在gp裡面建了幾十張表都是這樣,準備用talend進行抽數時就出現錯誤:

error: missing data for column 「referenceid」

不過還好我們可以通過information_schema.columns檢視去查詢哪些列是大寫的,來實現批量修改的功能。

select

*from information_schema.

columns

where table_schema=

'dwd'

and table_name<>

'pg_stat_statements'

and column_name <> lower(column_name)

;

既然可以查出來,那麼我們新建乙個函式就可以實現批量修改的功能了:

create

orreplace

function f_exec(

)returns void as $$

declare

x varchar

(500);

begin

for x in

(select

'alter table "'

|| table_name ||

'" rename column "'

|| column_name ||

'" to '

|| lower( column_name )

||';' alter_column

from

information_schema.

columns

where

table_schema =

'dwd'

and column_name <> lower(column_name)

and table_name<>

'pg_stat_statements'

)loop

execute x ;

endloop

;end

;$$ language plpgsql;

最後執行該函式,大功告成!

bill@bill

=>

select f_exec();

f_exec

--------(1

row)

修改所有列 Excel 批量處理 修改檔名

這裡是匯集在日常工作上常碰到的場景,逐一匯集在此。以下是目錄 1 批量修改檔案 2 批量修改資料夾 3 批量修改工作表名 對於第一部分,這裡可以細分有兩種。兩種方法都屬於比較清晰易懂的 a vba 舊名as新名 例外,這還分享乙個返回當前桌面desktop路徑的其中一種方法。建立shell物件,旗下...

postgresql許可權修改

兩處修改 1.postgresql.conf listen addresses項值設定為 在9.0 windows版中,該項配置已經是 無需修改。2.pg hba.conf host all all 127.0.0.1 32 md5行下新增以下配置 host all all 0.0.0.0 0 md...

oracle修改表增加列刪除列修改列

tag oracle修改表 sql增加列 sql刪除列 sql修改列 1.增加列 alter table table name add column datatype default expr column datatype.例如 sql alter table emp01 add eno numb...