So I want to insert something into a table which was created before with bteq. I already googled for this (e.g. here) however I already cast on the column and that did not erase the error.
The creation statement looks like this:
.logmech LDAP
.logon databae/user_id,pwd
.set width 256
.set retcancel on database libname;
DATABASE libname;
create MULTISET table libname.IRIS( "SEPAL_LENGTH" FLOAT, "SEPAL_WIDTH" FLOAT, "PETAL_LENGTH" FLOAT, "PETAL_WIDTH" FLOAT, "TARGET" FLOAT, "TIMESTAMP1" TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(6)' DEFAULT NULL , "NULL_VALUES" FLOAT) UNIQUE PRIMARY INDEX("TimeStamp1");
.QUIT
.LOGOFF
.EXIT
And the insertion Statement looks like the following:
.logmech LDAP
.logon databae/user_id,pwd
.set width 256
.set retcancel on database libname;
DATABASE libname;
.IMPORT VARTEXT FILE =/path_to_file/data.csv, skip=1;
.REPEAT *
USING "SEPAL_LENGTH" (varchar(2000)), "SEPAL_WIDTH" (varchar(2000)), "PETAL_LENGTH" (varchar(2000)), "PETAL_WIDTH" (varchar(2000)), "TARGET" (varchar(2000)), "TIMESTAMP1" (varchar(2000)), "NULL_VALUES" (varchar(2000))
INSERT INTO IRIS_delete VALUES(cast( :"SEPAL_LENGTH" as FLOAT), cast( :"SEPAL_WIDTH" as FLOAT), cast( :"PETAL_LENGTH" as FLOAT), cast( :"PETAL_WIDTH" as FLOAT), cast( :"TARGET" as FLOAT), cast( :"TIMESTAMP1" as TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(6)'), cast( :"NULL_VALUES" as FLOAT));
.QUIT
.LOGOFF
.EXIT
By executing the insert statement I get the error:
*** Failure 6760 Invalid timestamp. Statement# 1, Info =0
Here are some examples for the csv:
|sepal_length|sepal_width|petal_length|petal_width|target|TimeStamp1|Null_values 0|5.1|3.5|1.4|0.2|0.0|2018-09-18 13:26:30.583216|
1|4.9|3.0|1.4|0.2|0.0|2018-09-18 13:26:30.583216|
2|4.7|3.2|1.3|0.2|0.0|2018-09-18 13:26:30.583216|
3|4.6|3.1|1.5|0.2|0.0|2018-09-18 13:26:30.583216|
4|5.0|3.6|1.4|0.2|0.0|2018-09-18 13:26:30.583216|
5|5.4|3.9|1.7|0.4|0.0|2018-09-18 13:26:30.583216|
6|4.6|3.4|1.4|0.3|0.0|2018-09-18 13:26:30.583216|
7|5.0|3.4|1.5|0.2|0.0|2018-09-18 13:26:30.583216|
8|4.4|2.9|1.4|0.2|0.0|2018-09-18 13:26:30.583216|
9|4.9|3.1|1.5|0.1|0.0|2018-09-18 13:26:30.583216|
Do you know what is wrong with the timestamp?
Mimi, the number and order of column in your bteq script and data file are not matching Check below sample for columns specified in script and number of column in file
"SEPAL_LENGTH" (1), "SEPAL_WIDTH"(2), "PETAL_LENGTH"(3), "PETAL_WIDTH"(4), "TARGET"(5), "TIMESTAMP1"(6), "NULL_VALUES"(7)
col1->0| col2->5.1| col3->3.5| col4->1.4| col5->0.2| col6->0.0| col7->2018-09-18 13:26:30.583216| col8->
You can resolve your issue by adding 1 more column before the timestamp column in your table and bteq script like below where I added "TARGET1" before timestamp column
USING "SEPAL_LENGTH" (varchar(2000)), "SEPAL_WIDTH" (varchar(2000)), "PETAL_LENGTH" (varchar(2000)), "PETAL_WIDTH" (varchar(2000)), "TARGET" (varchar(2000)), "TARGET1" (varchar(2000)), "TIMESTAMP1" (varchar(2000)), "NULL_VALUES" (varchar(2000))
INSERT INTO IRIS_delete VALUES(cast( :"SEPAL_LENGTH" as FLOAT), cast( :"SEPAL_WIDTH" as FLOAT), cast( :"PETAL_LENGTH" as FLOAT), cast( :"PETAL_WIDTH" as FLOAT), cast( :"TARGET" as FLOAT), cast( :"TARGET1" as FLOAT), cast( :"TIMESTAMP1" as TIMESTAMP(6) FORMAT 'YYYY-MM-DDBHH:MI:SS.S(6)'), cast( :"NULL_VALUES" as FLOAT));