Xun Zhaopostgresql Zhong Suo You De Kong Biao
-
psql db_name -c "\dt" > all_tables.txt 修改之,使每行只有表名
-
创建一个sh文件如下:
!/bin/bash
fname="all_tables.txt"
var=cat $fname
for name in $var do msg="select count(*) from $name;select '$name';" echo $msg done
运行这个脚本: ./find_e_table.sh > t.sql
再运行psql: psql db_name -f t.sql 运行后得到以下内容: count
0
(1 row)
?column?
auth_group (1 row)
count
0
(1 row)
?column?
auth_group_permissions (1 row)
count
0
(1 row)
?column?
auth_message (1 row)
count
303 (1 row)
?column?
auth_permission (1 row)
count
3
(1 row)
?column?
auth_user (1 row)
count
0
(1 row)
?column?
auth_user_groups (1 row)
以上内容存为t.txt
- 用grep整理 grep "[^a-z]count[^a-z]\|[^a-z]column[^a-z]\|--\|^$\|row)" . -rvn --include=t.txt > tt.txt
tt.txt 内容如下: 0 auth_group 0 auth_group_permissions 0 auth_message 303 auth_permission 3 auth_user 0 auth_user_groups
- 用vim打开tt.txt,搜索/[1-9] 回车 dj 直到找不到结果为止。 最后用grep 删除0行即可: grep "0" . -rvn --include=tt.txt > empty.txt
这是我对postgresql和linux命令行编程不熟的解决方案。 肯定有更方便的方式,如果谁有,请告诉我谢谢。 About里有我的信箱地址。