在PostgreSQL中所有表的所有记录中将所有空字符串设置为NULL

Asked
Viewd548

2

我想用PostgreSQL中所有表的所有列中的空字符串更新所有记录。有没有办法做到这一点的查询?或者至少如何查询没有NOT NULL约束的所有列。

1 个答案

2

像这样访问information_schema

 select * 
from information_schema.columns
where is_nullable = 'YES';
 

根据这些数据,您可以为所有表和列生成更新语句。

  • 将来,您可能希望对这些列施加约束,以防止它们被允许为空字符串。

    KuberchaunNovember 06, 2009 18:13
  • @ StarShip3000,这是从另一个数据库引入的数据。没有外键,没有任何约束.....

    Matt HaleyNovember 06, 2009 23:50
  • 您可能要过滤特定的数据库和名称空间:

    select table_name, column_name from information_schema.columns where is_nullable = 'YES' and table_schema = '' and table_catalog = ''。将结果存入文本文件后,可以将行开头替换为SELECT count(*) from,将管道分隔符替换为where,将行结尾替换为::text = '';。这将为您提供选择命令,以运行以识别具有空字符串的表

    StéphaneMay 03, 2016 10:38