#!/bin/bash
db_name=库名
pgsql(){
PGPASSWORD=A7GaKXT3JEY3_Qrh /usr/bin/psql -U postgres -d ${db_name} -p 5432 -Atc "$@"
}
desc(){
for table_name in `pgsql "\dt+"|awk -F '|' '{print $2}'`;do
for field in `pgsql "\dS+ $table_name"|awk -F '|' '{print $1}'`;do
typeAndLen=$(pgsql "\dS+ $table_name"|awk -v field=$field -F '|' '
BEGIN{map["bigint"]=64;map["integer"]=32;map["smallint"]=16;map["timestamp"]=64;map["text"]=10485760;map["boolean"]=8}
$1 == field{split($2,arr," ");match($2,/.*\(([0-9]+)\)/,am);
if(map[arr[1]]==null && am[1]==null){if($2=="character varying"){lens=10485760}else{lens="--"}}else if(am[1]!=null){lens=am[1]}else{lens=map[arr[1]]}
if($2 ~ /character varying/){type="varchar"}else{type=arr[1]}}
END{print field,type,lens}
')
echo "${table_name} ${typeAndLen}"
done
done
}
desc
PostgreSQL 统计某库下各表字段类型对应定义的长度
于 2023-03-30 14:31:53 首次发布