Postgresql 触发或计算列或更新或查看
我有两个csv文件Postgresql 触发或计算列或更新或查看,postgresql,database-design,Postgresql,Database Design,我有两个csv文件file1.csv和file2.csv我将这些文件加载到 数据库中的两个表“table1”和“table2”表1包含 两列,这些列使用表2列来计算它们的 值,然后可以删除表2的行,因为它 仅用于更新表1 我的问题是: 哪种解决方案更好: 当表2中的insert执行更新两列的触发器时 在表1中,从表2中删除当前行,因为它只使用了 计算表1的两列 删除表2,在加载文件2时只更新表1 将这两列创建为计算列,以便 仅虚拟列 创建由表1的所有列组成的视图,并添加两个计算 此视图中的列。你
file1.csv
和file2.csv
我将这些文件加载到
数据库中的两个表“table1
”和“table2
”<代码>表1包含
两列
,这些列使用表2
列来计算它们的
值,然后可以删除表2的行,因为它
仅用于更新表1
我的问题是:
哪种解决方案更好:
当表2中的insert执行更新两列的触发器时
在表1中,从表2中删除当前行,因为它只使用了
计算表1的两列
删除表2,在加载文件2时只更新表1
将这两列创建为计算列,以便
仅虚拟列
创建由表1的所有列组成的视图,并添加两个计算
此视图中的列。你可以提出另一个解决方案
5:
- 创建一个
临时
暂存表表2
。临时表的性能要好得多(并且不会持久化)
将
文件2.csv复制到其中
更新
表1
临时表将在会话结束时自动删除。此处的代码示例:
为了重复使用,您可以保留一个空的持久化表2
作为临时表的模板,如链接答案中所示。
或者甚至将其全部放入plpgsql函数中(我会这么做)。另一个选项是使用外部数据包装器从数据库中读取文件2.csv(无需加载),并将计算结果插入表1
。这假设您使用的是Postgres 9.1+,并且您的file2.csv不是太大。然而,欧文的建议可能是最有用的解决办法