Vertica中的连接列不起作用

时间:2013-03-25 19:45:25

标签: sql netezza vertica

我正在尝试从vertica数据库表中导出insert语句。我正在尝试创建一个生成插入语句但我遇到语法问题的查询。如何在Vertica中执行以下操作?

select "insert into owner.target_tbl values ( "  ||"'"||a.Head_id||"',"||"'"||a.creation_dt||"',"||"'"||a.section"'"||");" as Query_column
from source_tbl a

3 个答案:

答案 0 :(得分:4)

如果您引用带双引号的名称,Vertica会认为它是一个列,在您的情况下会导致错误。

解决方案将是:

  • 在字符串周围使用单引号
  • 如果您在单引号字符串中需要单引号,只需加倍(单引号的两倍,而不是双引号):

    select 'insert into owner.target_tbl values (' ||'''' || 'a string' ||''', ' || 2 ||');' as Query_column;
    
                         Query_column                     
    ------------------------------------------------------
    insert into owner.target_tbl values ('a string', 2);
    (1 row)
    

答案 1 :(得分:3)

使用单引号而不是双引号:

=> select "foo" || "bar" from dual;
ERROR:  column "foo" does not exist
=> select 'foo' || 'bar' from dual;
 ?column? 
----------
 foobar
(1 row)

答案 2 :(得分:1)

建议:确保添加案例以包装可能的空值 - 如果连接序列的其中一个参数为null,则结果将为null。