Неверная отметка времени при вставке в тераданные с помощью BTEQ - PullRequest
0 голосов
/ 18 сентября 2018

Итак, я хочу вставить что-то в таблицу, которая была создана ранее с помощью bteq.Я уже гуглил по этому поводу (например, здесь ), однако я уже произвел приведение к столбцу, и это не устранило ошибку.

Оператор создания выглядит следующим образом:

.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

А оператор вставки выглядит следующим образом:

.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

При выполнении оператора вставки я получаю ошибку:

*** Сбой 6760 Неверная отметка времени.Оператор # 1, Info = 0

Вот несколько примеров для 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 |

Знаете ли вы, что не так с отметкой времени?

1 Ответ

0 голосов
/ 19 сентября 2018

Mimi, номер и порядок столбцов в вашем скрипте bteq и файле данных не совпадают. Ниже приведен пример столбцов, указанных в сценарии, и номера столбцов в файле

"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->

Вы можете решить проблему, выполнив следующие действия:добавив еще 1 столбец перед столбцом отметки времени в вашей таблице и скрипт bteq, как показано ниже, где я добавил «TARGET1» перед столбцом отметки времени

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));
...