#sql #oracle #date #oracle-sqldeveloper
Вопрос:
У меня возникла проблема с импортом CSV-файла с помощью SQL Developer. Я создал таблицу для импорта данных «даты», используя приведенный ниже код
CREATE TABLE DEPARTMENT ( DATECOLUMN DATE );
Я импортировал CSV, щелкнув правой кнопкой мыши и так далее.
Интересно, что данные CSV «дата» имеют формат «ГГГГ-ММ-ДД», но при загрузке в SQL developer (предварительный просмотр, перед импортом) они приняли формат «ММ/ДД/ГГГГ».
Я считаю, что в этом проблема, потому что при попытке импорта он вернул ошибку «gdk-05030», что означает, что данные содержат больше, чем необходимо (для соответствия формату).
Ответ №1:
Для меня это выглядит следующим образом:
- формат даты в файле CSV
yyyy-mm-dd
(как вы сказали) - когда вы запросили таблицу после вставки, вы обнаружили, что значения выглядят по-другому —
mm/dd/yyyy
- это связано с тем, что в текущих настройках используется этот формат даты. Если вы хотите изменить его, запустите
alter session set nls_date_format = 'yyyy-mm-dd';
а затем выберите строки из таблицы.
- в качестве альтернативы перейдите в Настройки разработчика SQL и установите желаемый формат даты в разделе [База данных — NLS].
Комментарии:
1. Извините, мое объяснение, возможно, было плохим. Формат мм/дд/гггг отображается перед вставкой(предварительный просмотр). не запрошенный результат.
2. Вы пробовали с ALTER SESSION?
3. Мои слова были скудны. Ваш код внес изменения в настройки, да.
4. Точно; вы не можете изменять содержимое CSV-файла, разработчик SQL не является «редактором файлов» 🙂 Похоже, что не все данные в столбце MGRSTARTDATE соответствуют одному и тому же формату. Строки на скриншоте выглядят одинаково, поэтому — не могли бы вы создать небольшую копию исходных CSV-файлов и попытаться загрузить только те 7 строк, которые выглядят нормально? Если это работает нормально, то вы должны найти виновника в файле CSV. В качестве альтернативы измените тип данных столбца таблицы, например, на VARCHAR2(20), и загрузите весь файл. Затем, используя SQL, найдите недопустимые значения и исправьте их (а затем скопируйте допустимые значения в столбец типа данных ДАТЫ).
5. Это сработало. Спасибо вам за все ответы. Я еще не проверил формат всех строк, но импорт его в varchar2 сработал, и это все, что мне нужно, так как я бы не стал так сильно изменять данные. Спасибо!