0

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

  1. 姓名: ID# 姓名
  2. 电子邮件: ID# 电子邮件
  3. 电话:ID#电话
  4. 备注:ID#备注

我有一个视图显示所有这些表中的信息(在实际数据库中大约有 90 个)和一些代码,这些代码将每个“注释”处理成单独的组件。这些笔记基本上是所有其他信息的混杂,带有典型的笔记阅读:

First M. Last, Position Title, 电话 123-456-7890, 电子邮件 abc@def.com

我现在拥有的是遍历视图中所有注释(约 300 万)并识别每个元素(电话、电子邮件等)的代码,但现在我需要获取这些元素并将它们写入另一个中的相应列数据库中的表。我知道你不能像写表那样写视图,我不确定最好的策略是什么,因为我有很多笔记要处理。任何人都可以帮忙吗?

4

1 回答 1

1

实际上,如果您定义了适当的触发器(较新的 Pg 版本)或(较旧的版本),您可以写入视图。DO INSTEADRULE

不过,在这种情况下,我建议从您希望更改为新表的视图中提取数据(UNLOGGED如果使用 PostgreSQL 9.1+)。然后,我将编写一系列UPDATE ... FROM语句,每个要更新的表一个,它与更改信息表连接。

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

于 2013-07-20T05:23:37.907 回答