Конвертировать дату из одного формата в другой, используя управляющий файл SQL * Loader - PullRequest
4 голосов
/ 22 июля 2010

Данные из infile имеют формат MM/DD/YYYY как мне указать управляющему файлу загрузить его в базу данных как YYYYMM?

Ответы [ 2 ]

10 голосов
/ 22 июля 2010

Когда вы указываете столбцы в объявлении INFILE, просто укажите формат, в котором хранятся данные. Вот так

load data
infile 'whatever.csv'
into table t23
fields terminated by ','
trailing nullcols
(
       col_1    integer 
     , col_2    char 
     , col_3    date "MM/DD/YYYY"
     , col_4    date "MM/DD/YYYY"
     , col_5    char 
)

Не беспокойтесь о формате даты «до».Это только для демонстрации.Oracle хранит даты в собственном внутреннем представлении.

0 голосов
/ 22 июля 2010

Вы пытаетесь загрузить данные MM / DD / YYYY в поле char / varchar2 или в поле даты?

Если вы пытаетесь загрузить его в поле даты и хотите сохранить день месяца, ответ APC верен. Вы всегда можете просто представить YYYYMM, если это то, что вы хотите сделать.

Если вы пытаетесь загрузить его в поле даты и хотите усечь его до первого дня месяца, я думаю, что-то вроде этого будет работать:

date_column date "MM/DD/YYYY" "trunc(:date_column, 'mm')"

Если вставить столбец CHAR / VARCHAR2, вы можете преобразовать его немного по-другому:

vc2_column char "substr(:vc2_column, 7, 4) || substr(:vc2_column, 1, 2)"

...