#excel #oracle #sqldatatypes #varchar2
Вопрос:
У меня есть excel
то, что я пытаюсь импортировать в таблицу базы данных oracle.
Некоторые значения в Excel состоят, например 14:39.5
, из двойного двоеточия. Какие данные в таблице базы данных oracle я должен предоставить для хранения этого значения ?
В настоящее время задан varchar
тип данных и его выдача ошибки при импорте как :
Conversion error! Value: "00:12:01.615518000" to data type: "Number". Row ignored! Value is '00:12:01.615518000'. Cannot be converted to a decimal number object. Valid format: 'Unformatted'
Комментарии:
1. Вы сказали: «В настоящее время задан тип данных varchar», но ошибка говорит о том, что вы объявили его как ЧИСЛО. Так что же это такое? Я бы посоветовал вам начать с обновления вашего вопроса, чтобы показать DDL для таблицы. И объясните точно, что на самом деле означает «14:39.5». Это должно быть время суток? Прошедшее время? Что — то совсем другое?
Ответ №1:
Вы можете сохранить его как INTERVAL DAY(0) TO SECOND(9)
тип данных:
CREATE TABLE table_name (
time INTERVAL DAY(0) TO SECOND(9)
);
Затем вы можете использовать TO_DSINTERVAL
передачу своего значения с '0 '
добавлением к началу:
INSERT INTO table_name (time)
VALUES ( TO_DSINTERVAL('0 ' || '00:12:01.615518000') );
бд<>скрипка <>здесь
Ответ №2:
Если это часть метки даты/времени, вы можете сохранить ее как DATE
или TIMESTAMP
добавить компонент даты. У Oracle есть не просто TIME
тип данных.
Если вы не можете добавить к нему компонент даты, то, предполагая, что это временной интервал, вы можете преобразовать его в секунды или микросекунды (потерять двоеточия) и сохранить как NUMBER
.
Если вы хотите сохранить точное форматирование, как показано на рисунке, ваш единственный вариант-сохранить его в виде текста с помощью VARCHAR2
или чего-то подобного.