BTEQ脚本:将表复制到另一个表时出错

时间:2016-02-14 16:59:41

标签: scripting teradata sql-insert

我想用以下BTEQ脚本将临时表(在我的脚本DLM_PE_TEMPO中命名)的内容复制到另一个(DLM_PE)中:

  INSERT INTO DLM_PE 
(
   TSTAMP , 

   Line_ID ,

   Key_Date , 

   DS_SYNCH_RATE ,

   Us_Synch_Rate , 

   Ds_Cv_X1_Percentile , 

   Ds_Cv_X2_Percentile , 

   Us_Cv_X1_Percentile , 

   Us_Cv_X2_Percentile , 

   Stability , 

   Systemtype 

)

SELECT 

  :TSTAMP (date) , 

  :Line_ID (varchar(10)), 

  :Key_Date (date), 

  :DS_SYNCH_RATE (float), 

  :Us_Synch_Rate (float) ,

  :Ds_Cv_X1_Percentile (float) , 

  :Ds_Cv_X2_Percentile (float) ,  

  :Us_Cv_X1_Percentile (float) , 

  :Us_Cv_X2_Percentile (float) , 

  :Stability (integer) , 

  :Systemtype (integer) 

FROM DLM_PE_TEMPO ;

但每次失败时我都会收到以下错误:

Failure 3857 Cannot use value (or macro parameter) to match 'TSTAMP'.
                Statement# 1, Info =0 

您能否告诉我BTEQ脚本有什么问题?我在INSERT语句中做错了吗?

此致

1 个答案:

答案 0 :(得分:1)

没有导入,你没有使用。所以列名前面没有冒号:

  INSERT INTO DLM_PE 
(
   TSTAMP , 
   Line_ID ,
   Key_Date , 
   DS_SYNCH_RATE ,
   Us_Synch_Rate , 
   Ds_Cv_X1_Percentile , 
   Ds_Cv_X2_Percentile , 
   Us_Cv_X1_Percentile , 
   Us_Cv_X2_Percentile , 
   Stability , 
   Systemtype 
)
SELECT 
  TSTAMP (date) , 
  Line_ID (varchar(10)), 
  Key_Date (date), 
  DS_SYNCH_RATE (float), 
  Us_Synch_Rate (float) ,
  Ds_Cv_X1_Percentile (float) , 
  Ds_Cv_X2_Percentile (float) ,  
  Us_Cv_X1_Percentile (float) , 
  Us_Cv_X2_Percentile (float) , 
  Stability (integer) , 
  Systemtype (integer) 
FROM DLM_PE_TEMPO ;

你不需要那些类型转换(除非你必须添加一个特定的格式),如果数据taypes不匹配,将会有一个自动转换:

  INSERT INTO DLM_PE 
(
   TSTAMP , 
   Line_ID ,
   Key_Date , 
   DS_SYNCH_RATE ,
   Us_Synch_Rate , 
   Ds_Cv_X1_Percentile , 
   Ds_Cv_X2_Percentile , 
   Us_Cv_X1_Percentile , 
   Us_Cv_X2_Percentile , 
   Stability , 
   Systemtype 
)
SELECT 
  TSTAMP , 
  Line_ID , 
  Key_Date , 
  DS_SYNCH_RATE , 
  Us_Synch_Rate ,
  Ds_Cv_X1_Percentile , 
  Ds_Cv_X2_Percentile ,  
  Us_Cv_X1_Percentile , 
  Us_Cv_X2_Percentile , 
  Stability , 
  Systemtype
FROM DLM_PE_TEMPO ;