【问题标题】:teradata sql to insert from a volatile table to a permanent tableteradata sql 从易失性表插入到永久表
【发布时间】:2016-03-17 05:53:55
【问题描述】:

我有一个需要存储参数列表的要求。参数将作为 csv 文件输入。如果它们不存在,它们将被插入到表中。我有一个建议,我可以将这些数据导入一个 volatile 表并使用如下 sql 查询:

insert into table permvariables 
select * from tempvariables
minus 
select * from permvariables;

tempvariables 是我的 volatile 表,而 permvariables 是我的永久表。这个解决方案会起作用吗?有更好的方法吗?

【问题讨论】:

    标签: teradata


    【解决方案1】:

    而不是MINUS,只需使用一个

    MERGE INTO permvariables AS tgt 
    USING tempvariables AS src
    ON tgt.pk_column(s) = src.pk_column(s)
    WHEN NOT MATCHED INSERT VALUES (src.pk_column(s), src.cola, ...)
    

    【讨论】:

    • 非常感谢。是因为 minnus 不能在 teradata sql 中工作,还是因为合并是一种更具成本效益的操作?
    • 当然 MINUS/EXCEPT 会起作用,对于 INSERT SELECT WHERE NOT EXISTS 也是如此,但是那些需要访问目标表两次。这就是标准 SQL 实现 MERGE 的主要原因。
    猜你喜欢
    • 2016-01-18
    • 2020-12-10
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 2017-01-31
    • 2013-11-29
    • 1970-01-01
    相关资源
    最近更新 更多