我想用以下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语句中做错了吗?
此致
答案 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 ;