使用从postgreSQL中的视图获取的数据写入多个表?

使用从postgreSQL中的视图获取的数据写入多个表?,sql,postgresql,postgresql-9.1,Sql,Postgresql,Postgresql 9.1,我是SQL新手,我有一个需要清理的大型数据库。其格式化方式如下:每个表都有一列包含ID号,第二列包含其他类型的信息,如 姓名:ID#姓名 电子邮件:ID#电子邮件 电话:ID#电话 注:ID#注 我有一个视图,它显示了所有这些表中的信息(在实际的数据库中大约有90个表)和一些代码,这些代码记录了每个“注释”,并将其处理为各个组件。这些注释基本上是所有其他信息的混合体,具有典型的注释阅读: First M. Last, Position Title, Phone 123-456-7890, Ema

我是SQL新手,我有一个需要清理的大型数据库。其格式化方式如下:每个表都有一列包含ID号,第二列包含其他类型的信息,如

  • 姓名:ID#姓名
  • 电子邮件:ID#电子邮件
  • 电话:ID#电话
  • 注:ID#注
  • 我有一个视图,它显示了所有这些表中的信息(在实际的数据库中大约有90个表)和一些代码,这些代码记录了每个“注释”,并将其处理为各个组件。这些注释基本上是所有其他信息的混合体,具有典型的注释阅读:

    First M. Last, Position Title, Phone 123-456-7890, Email abc@def.com 第一个M.最后一个,职位名称,电话123-456-7890,电子邮件abc@def.com 我现在拥有的是迭代视图中所有注释(约300万条)并标识每个元素(电话、电子邮件等)的代码,但现在我需要获取这些元素并将它们写入数据库中其他表中各自的列中。我知道你不能像写表那样写视图,我不确定最好的策略是什么,因为我有很多笔记要处理。有人能帮忙吗?

    事实上,如果您定义了一个合适的
    DO
    触发器(较新的Pg版本)或
    规则(较旧的版本),您可以写入视图

    不过,在这种情况下,我建议您将要更改的视图中的数据提取到一个新表中(
    unlocked
    ,如果使用PostgreSQL 9.1+)。然后我会写一系列的
    更新。。。从
    语句中,每个要更新的表对应一条语句,这些语句与变更信息表关联

    如果这是不可行的,另一种更慢但更适合分小块完成的方法是使用PL/PgSQL过程,从视图中获取几行或从视图中创建的临时表,在所有关联表中更新它们,再获取几行,然后重复