我有两个csv文件file1.csv
和file2.csv
我加载了这些文件
数据库“table1
”和“table2
”中的两个表。 table1
包含
two columns
,这些列使用table2
列来计算它们
值,然后可以删除table2
行,因为它
仅用于update
table1
。
我的问题是:
哪种解决方案更好:
答案 0 :(得分:1)
TEMPORARY
临时表table2
。临时表执行得更好(并且不会持久化)。COPY
file2.csv。UPDATE
table1。临时表会在会话结束时自动删除。代码示例:
How to tell if record has changed in Postgres
对于重复使用,您可以将一个空的持久table2
作为临时表的模板,如链接答案中所示。
或者甚至将所有这些都放入plpgsql函数中(这就是我要做的)。
答案 1 :(得分:1)
另一种选择是使用file_fdw FOREIGN DATA WRAPPER从db中读取file2.csv(无需加载)并将计算结果插入table1
。这假设您正在使用Postgres 9.1+,并且您的file2.csv不是太大。然而,Erwin的建议可能是最有用的解决方案。