从CSV文件导入日期到teradata表

时间:2017-05-12 12:17:38

标签: csv import teradata

我需要使用BTEQ将包含2个日期的数据从CSV文件导入到teradata易失性表中。 我使用以下脚本:

CREATE MULTISET VOLATILE TABLE tab1,
NO FALLBACK ,      
NO BEFORE JOURNAL,      
NO AFTER JOURNAL,      
CHECKSUM = DEFAULT,      
DEFAULT MERGEBLOCKRATIO  (  
ent DECIMAL(3,0) NOT NULL, 
eng DECIMAL(7,0), 
dat_deb DATE, 
dat_fin DATE,  
ad_id DECIMAL(8,0),
id_lig DECIMAL(6,0),
Cd_a DECIMAL(7,0),
va_n DECIMAL(3,0),
satu DECIMAL(3,0)
)  
PRIMARY INDEX (ent, eng,ad_id,id_lig) 
ON COMMIT PRESERVE ROWS ;

然后我将创建的表导入以下数据:

.IMPORT VARTEXT ';' FILE="C:\Desktop\fichiertest.csv"  , SKIP=1; 
.REPEAT *

.SET QUIET ON;

USING(
ent DECIMAL(3,0) NOT NULL, 
eng DECIMAL(7,0), 
dat_deb DATE, 
dat_fin DATE,  
ad_id DECIMAL(8,0),
id_lig DECIMAL(6,0),
cd_a DECIMAL(7,0),
va_n DECIMAL(3,0),
satu DECIMAL(3,0)
)

INSERT INTO tab1(
ent, 
eng, 
dat_deb , 
dat_fin ,  
ad_id, 
id_lig,
cd_a,
va_n,
satu 
) 
      VALUES (  
:ent, 
:eng, 
CAST(:dat_deb AS DATE), 
CAST(:dat_fin AS DATE),  
:ad_id, 
:id_lig,
:cd_a,
:va_n,
:satu  
      ); 

但我的日期有问题:***失败2665无效日期。

你可以帮我解决这个错误

1 个答案:

答案 0 :(得分:0)

我花了最后几个小时尝试将csv文件加载到Teradata中。我一直遇到2665错误。为了解决该问题,我了解到保存在csv文件中的日期必须设置为“ YYYY-MM-DD”格式。

所以我使用excel中的format cells选项重新格式化了数据,然后重新保存了csv。

我运行了创建表查询,将日期列转换为日期,如下所示: ,CREATION_DT DATE NOT NULL

在将csv导入Teradata之前,我先进入Teradata SQL Assistant,然后从菜单中选择“工具” >>“选项” >>“数据格式”,然后将“以这种格式显示日期”选项更改为2009-12-25选项。最后,我运行了导入查询。

希望这会有所帮助!采矿愉快!