2013-03-25 78 views
-1

我想从Vertica数据库表中获取插入语句导出。我试图创建一个生成插入语句的查询,但我遇到了语法问题。我如何在Vertica中执行下面的操作?Vertica中的连接列不起作用

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

问题是生成的插入语句不起作用,或者生成的语句本身不起作用?你从Vertica导出插入什么?你有netezza标签,如果是NZ,你不应该逐行插入。 – 2013-03-25 20:26:15

+1

我绝对确定“* a amexperiencing syntax issues *”是**不是** Vertica中的有效错误消息。请发布确切的错误消息和作为查询结果的SQL语句。 – 2013-03-26 09:14:09

回答

3

使用单引号不是双引号:

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

建议:确保你补充的情况下包裹起来可能为空值 - 如果参数之一concatenatio n序列为空 - 您的结果将为空。

+0

如何处理空值? – 2018-01-25 01:28:28