2012-05-02 4 views
-2

Я использую Oracle SQL Developer 3.0.03. Я пытаюсь загрузить файл Excel в таблицу данных Oracle. Я получаю сообщение об ошибке. Столбец в базе данных - это метка времени, и я не знаю, что помещать в формат даты для «Мастера загрузки данных». Если я использую следующий формат (дд-мама-уу hh.mi.ss), SQL Developer появится следующее сообщение об ошибке:SQL Developer: Загрузка данных Ошибка даты

--Insert failed for row 1 TIMESTAMP_COLUMN GDK-05047: A day of the month must be between 1 and the last day of the month. 
--Row 1 
INSERT INTO TABLE_1 (Column1, Column2, Column3, TIMESTAMP_COLUMN) VALUES ('Some Text','Some Text','Some more text',to_timestamp('40604.0', 'dd-mon-yy hh.mi.ss')); 

Числовой формат по умолчанию в EXCEL является: 40604,0 Что, если изменить ячейку в короткий формат даты вы получите: 3/2/2011

Я пытаюсь выяснить, что «Формат» мне нужно поместить в раздел FORMAT «Мастер загрузки данных», который примет формат даты, который находится в EXCEL и загружает его в Oracle как TIMESTAMP.

enter image description here

+0

если вставить ** ЗНАЧЕНИЯ INSERT INTO TABLE_1 (Column1, Столбец2, Column3, TIMESTAMP_COLUMN) ('Some Text' , 'Some Text', 'Some more text', '12 -08-88 00.00.00 '); ** дает ли вам сообщение об ошибке? – p0rter

+0

@ p0rter Я бы подумал, что это сработает, но дата в файле Excel находится в таком формате: 40604.0 –

ответ

0

Дата «нуля» Excel - январь 0 (да, ноль), 1900. Поскольку Oracle не может обрабатывать «нулевой» день в месяц, вам нужно вычесть 1 из значения Excel; Таким образом, следующий вы должны получить близко к тому, что вы хотите:

SELECT CAST(TO_DATE('01-JAN-1900 00:00:00', 'DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP) + 
      NUMTODSINTERVAL(41017.6361109954 - 1, 'DAY') 
    FROM DUAL 

Насколько «как импортировать» идет, нет никакой даты Oracle формат, который я знаю, чтобы сделать это. Проще всего было бы импортировать значение в столбец NUMBER, а затем запустить скрипт для преобразования даты.

Делитесь и наслаждайтесь.

0

да и это проблема.

«День месяца должен быть между 1 и в последний день месяца.»

1), как создаются эти десятичные?

2) "04-06-2004"? или эти секунды с 1970 года?

Вам нужно добавить более подробную информацию об этом формате чисел!

1

Сегодня я столкнулся с тем же, и «исправил» эти два пути. Второй способ, вероятно, кажется слишком сложным, но это может помочь кому-то, если им сложно автоматизировать форматирование дат, чтобы они выглядели как стандартный dd-mmm-yy от Oracle.

  1. Отформатируйте столбцы даты в Excel как dd-mmm-yy и импортируйте непосредственно в таблицу.
    • Выделите столбец (ы)
    • Выберите «Дополнительные форматы чисел», где существующий формат является (в Excel 2010, он говорит генералу в раздаточном на вкладке Главной
    • Выберите последнюю запись «Пользовательский» в коробка Категория
    • вручную ввести дд-ммм-уу в Тип: коробка

  2. формат даты столбцы в Excel, как мм/дд/гг, импорт таблицы в виде текста, написать инструкцию вставить инструкцию из временного текста t возможность использования TO_DATE(date_field,'MM/DD/YYYY')
    • Выделите столбец (ы)
    • Выберите «Дополнительные форматы чисел», где существующий формат является (в Excel 2010, он говорит генерал в раздаточной на вкладке Главная
    • Выберите «Дата» запись в поле Категория
    • Выберите "03/14/01" из списка
Смежные вопросы