【问题标题】:Import date from CSV File to teradata table将日期从 CSV 文件导入 teradata 表
【发布时间】:2017-10-11 18:22:38
【问题描述】:

我需要使用 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  
      ); 

但我对日期有疑问:*** Failure 2665 Invalid date.

你能帮我解决这个错误吗

【问题讨论】:

  • 定义 VARTEXT 时,所有输入列必须定义为 VARCHAR(..)。此外,您应该通过应用高 PACK 来避免单行插入,例如.REPEAT * PACK 1000 ...

标签: csv import teradata


【解决方案1】:

过去几个小时我一直在尝试将 csv 文件加载到 Teradata 中。我一直遇到 2665 错误。为了解决这个问题,我了解到保存在 csv 文件中的日期必须格式化为 'YYYY-MM-DD'。

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

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

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

希望这会有所帮助!快乐挖矿!!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-31
    • 2013-03-13
    • 2020-09-01
    • 2017-07-31
    • 1970-01-01
    • 2013-01-09
    • 2015-10-26
    相关资源
    最近更新 更多