Добавить метку времени БД в импорт SQL Loader CSV - PullRequest
0 голосов
/ 25 апреля 2011

У меня есть клиент, у которого файл CSV не содержит никаких дат.Они хотели бы, чтобы отметка времени указывала, когда каждая строка загружается в их базу данных Oracle 11g.Файл CSV поставляется поставщиком, поэтому я не могу изменить файл.Я попытался добавить значение столбца по умолчанию и триггер «после вставки», но безуспешно.(Производительность не является проблемой, поскольку это нерабочий процесс).

Контрольные файлы выглядят так:

options (skip=1, direct=true, rows=10000)
load data
 infile data.dat
badfile sqldatatxtdata.bad
replace
     into table LAM.CSV_DATA_TXT
fields terminated by ','
trailing nullcols
(ASSET, ASSET_CLASS, MATURITY, PRICE)

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

create table LAM.CSV_DATA_TXT  (
ASSET   VARCHAR2(20),
ASSET_CLASS   VARCHAR2(50),
MATURITY  varchar2(50),
PRICE  NUMBER(12,8),
DATE_TIMESTAMP DATE default(SYSTIMESTAMP) 

Есть еще идеи?Спасибо.

1 Ответ

0 голосов
/ 25 апреля 2011

Добавление столбца TIMESTAMP со значением по умолчанию SYSTIMESTAMP должно выглядеть следующим образом:

SQL> create table t23
  2  ( id number not null
  3      , ts timestamp default systimestamp not null)
  4  /

Table created.

SQL> insert into t23 (id) values (9999)
  2  /

1 row created.

SQL> select * from t23
  2  /

        ID  TS
----------  ------------------------- 
      9999  25-APR-11 15.21.01.495000


SQL>

Поэтому вам необходимо более подробно объяснить, почему он не работает в вашем случае.


Я отмечаю, что в вашем примере вы создали столбец как тип данных DATE.Это будет означать, что оно усекает дефолтный SYSTIMESTAMP до ближайшей секунды.Если вам нужны значения меток времени, вам нужно использовать тип данных TIMESTAMP.

...