【问题标题】:Set all empty strings to NULL in all records of all tables in PostgreSQL将PostgreSQL中所有表的所有记录中的所有空字符串设置为NULL
【发布时间】:2009-11-06 17:02:05
【问题描述】:

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

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    像这样访问information_schema

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

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

    【讨论】:

    • 将来您可能希望对这些列施加约束,以防止它们成为空字符串。
    • @StarShip3000 这是从另一个数据库引入的数据。没有外键,没有任何形式的约束.....
    • 您可能想要过滤特定的数据库和命名空间:select table_name, column_name from information_schema.columns where is_nullable = 'YES' and table_schema = '<name_space>' and table_catalog = '<db_name>'。在文本文件中获得此结果后,您可以将行开头替换为SELECT count(*) from,将管道分隔符替换为where,将行结尾替换为::text = '';。这将为您提供选择命令来运行以识别具有空字符串的表
    猜你喜欢
    • 2012-01-25
    • 1970-01-01
    • 2016-01-31
    • 1970-01-01
    • 2022-12-11
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多