【问题标题】:How to import Date from .CSV to Teradata tables using Bteq?如何使用 Bteq 将日期从 .CSV 导入 Teradata 表?
【发布时间】:2014-10-15 12:07:57
【问题描述】:

我正在尝试导入使用 Bteq 脚本导出的数据,但无法加载到另一个表中。

.EXPORT report file=E:\t\tgt\report_excel_092702.csv;
.set width 200;
.SET TITLEDASHES OFF;
.SET SEPARATOR ','; 
select  empno,coalesce(ename,'no_name') as ename,coalesce(job,'no_job') as job ,coalesce(hiredate, date) as hiredate,COALESCE(mgr,0) as mgr,COALESCE(sal, 0) as sal,COALESCE(comm, 0) as comm,deptno from emps;
--.EXPORT reset
.LOGOFF
.EXIT

数据库 teradata1

report_excel_092702.csv(导出的 .csv)

 EMPNO  ename       job     hiredate     mgr     sal    comm DEPTNO
7698    BLAKE   MANAGER     81/11/17    7839    2850       0    30
7839    KING    PRESIDENT   81/11/17       0    50000      0    10
7654    MARTIN  SALESMAN    81/09/28    7698    1250    1400    30

Bteq 脚本....

.import vartext ',' file='E:\t\tgt\report_excel_092702.csv',skip=1;

 DATABASE tetra;
 delete from emp_csv;
.QUIET ON 
.REPEAT * 
 USING 
        empno    (varchar(100))
        ,ename   (varchar(100))
        ,hiredate (varchar(100))

 INSERT INTO emp_csv(empno,ename,hiredate)
        VALUES (
        :empno,
        :ename,
        Cast((:hiredate (Date,Format 'dd.mm.yyyy')) As Date) 
        --cast(hiredate 'yy/mm/dd') as :hiredate
        --CAST( CAST( :hiredate AS DATE FORMAT 'mm/dd/yyyy') AS DATE FORMAT 'mm/dd/yyyy')
        );
.QUIT
.LOGOFF

【问题讨论】:

  • 您是否在 BTEQ 日志文件中收到特定错误消息?

标签: csv teradata


【解决方案1】:

我想知道你为什么不做简单的 CASing,因为 yy/mm/dd 在 BTET 或 ANSI 模式下隐式转换为 DATE?它适用于我,日期格式与您相同。

.LOGON dbc, dbc; .import vartext '|' FILE = /root/ETL/new_revision/report.csv, skip=1; .REPEAT * USING ( EmpNo VARCHAR(2000) ,Name VARCHAR(2000) ,hire_date VARCHAR(2000) ) INSERT INTO retail.employee_import VALUES ( :EmpNo, :Name, CAST(:hire_date AS DATE), ); .QUIT .LOGOFF

【讨论】:

    猜你喜欢
    • 2017-10-11
    • 2010-11-23
    • 2014-07-09
    • 2010-11-22
    • 1970-01-01
    • 2015-01-31
    • 2015-10-26
    • 2014-06-04
    • 2013-07-13
    相关资源
    最近更新 更多