Hi,
I am new to Teradata. I am trying to load the data from csv file to Teradata 13.0 on VMWARE using TPT, where in columns are enclosed with double quotes (") and delimited with pipe ( | ).
e.g.
"1001"|"Amit"|"FIN"|"10001"|"1981-10-10"
"1002"|"Manish"|"FIN"|"25000"|"1990-01-01"
"1003"|"Sid"|""|"2000"|"1986-04-22"
"1004"|"Macho"|"GM"|""|"1972-05-19"
And I am using the below script -
DEFINE JOB LOAD_M1_TABLE_FROM_FILE
DESCRIPTION 'LOAD SAMPLE M1 TABLE FROM A FILE'
(
DEFINE SCHEMA M1_SCHEMA
DESCRIPTION 'SAMPLE M1 SCHEMA'
(
EMP_ID varchar(12),
EMP_NAME varchar(12),
EMP_DEPT varchar(5),
SALARY varchar(12),
DOB varchar(12)
);
DEFINE OPERATOR DDL_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DDL OPERATOR'
TYPE DDL
ATTRIBUTES
(
VARCHAR PrivateLogName = 'tpt_script_ddloper_log',
VARCHAR TdpId = 'dbc',
VARCHAR UserName = 'dbadmin',
VARCHAR UserPassword = 'dbadmin',
VARCHAR AccountID,
VARCHAR ErrorList = '3807'
);
DEFINE OPERATOR LOAD_OPERATOR()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER LOAD OPERATOR'
TYPE LOAD
SCHEMA M1_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'tpt_script_loadoper_privatelog',
INTEGER MaxSessions = 32,
INTEGER MinSessions = 2,
VARCHAR TargetTable = 'M1',
VARCHAR TdpId = 'dbc',
VARCHAR UserName = 'dbadmin',
VARCHAR UserPassword = 'dbadmin',
VARCHAR AccountId,
VARCHAR ErrorTable1 = 'tpt_script_LOADOPER_ERRTABLE1',
VARCHAR ErrorTable2 = 'tpt_script_LOADOPER_ERRTABLE2',
VARCHAR LogTable = 'tpt_script_LOADOPER_LOGTABLE'
);
DEFINE OPERATOR FILE_READER()
DESCRIPTION 'TERADATA PARALLEL TRANSPORTER DATA CONNECTOR OPERATOR'
TYPE DATACONNECTOR PRODUCER
SCHEMA M1_SCHEMA
ATTRIBUTES
(
VARCHAR PrivateLogName = 'tpt_script_dataconnoper_reader_privatelog',
VARCHAR FileName = 'code*.txt',
VARCHAR IndicatorMode = 'N',
VARCHAR OpenMode = 'Read',
VARCHAR Format = 'delimited',
VARCHAR NullColumns = 'Y',
VARCHAR OpenQuoteMark = '"',
VARCHAR CloseQuoteMark = '"',
VARCHAR TextDelimiter = '|',
VARCHAR trimchar = '"',
VARCHAR MultipleReaders = 'Y',
varchar trimcolumns = 'both',
VARCHAR SkipRowsEveryFile = 'Y',
INTEGER SkipRows = 1
);
STEP setup_tables
(
APPLY
('DROP TABLE M1;'),
('DROP TABLE M1_LOADOPER_ERRTABLE1;'),
('DROP TABLE M1_LOADOPER_ERRTABLE2;'),
('DROP TABLE M1_LOADOPER_LOGTABLE;'),
('CREATE TABLE M1(EMP_ID varchar(10), EMP_NAME varchar(10), EMP_DEPT varchar(3), SALARY varchar(10), DOB varchar(10));')
TO OPERATOR (DDL_OPERATOR() );
);
STEP load_data_from_file
(
APPLY
( 'INSERT INTO M1(:EMP_ID, :EMP_NAME, :EMP_DEPT, :SALARY, :DOB);')
TO OPERATOR (LOAD_OPERATOR() [1] )
SELECT * FROM OPERATOR (FILE_READER() [1] );
);
);
Data is getting loaded but double quotes are getting included in data.
In Teradata data is as below -
EMP_ID EMP_NAME EMP_DEPT SALARY DOB
---------- ---------- -------- ---------- ----------
"1004" "Macho" "GM "" "1972-05-1
"1002" "Manish" "FI "25000" "1990-01-0
"1007" "Sidhu" "" "2000" "1986-04-2
"1008" "Mach" "GM "" "1972-05-1
"1003" "Sid" "" "2000" "1986-04-2
"1006" "Mani" "FI "25000" "1990-01-0
If column length is less, then the data is trimmed before getting loaded. e.g. column EMP_DEPT and DOB.
Can you please help me out urgently. I am stuck up on this for last 3 days.
Regards
Atul