在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...