使用SQL * LDR的时间戳数据直接路径加载

时间:2020-03-06 14:27:28  来源:igfitidea点击:

SQL-LDR文档指出我们需要进行常规路径加载:

When you want to apply SQL functions
  to data fields. SQL functions are not
  available during a direct path load

我将TimeStamp数据存储在要通过SQL-LDR加载的CSV文件中,方法是描述以下字段:

STARTTIME       "To_TimeStamp(:STARTTIME,'YYYY-MM-DD HH24:MI:SS.FF6')",
COMPLETIONTIME  "To_TimeStamp(:COMPLETIONTIME,'YYYY-MM-DD HH24:MI:SS.FF6')"

所以我的问题是:是否可以在没有函数的情况下加载时间戳数据,还是在加载TimeStamp数据时无法执行直接路径加载的情况?

解决方案

在此OTN论坛主题中:

you just need to set the environment
  variable NLS_TIMESTAMP_FORMAT to tell
  SQL*Loader what format to expect the
  timestamp to be in:
  
  set NLS_TIMESTAMP_FORMAT=YYYY-MM-DD
  HH24:MI:SS.FF
  
  ..and remove the reference to the
  to_timestamp function completely from
  the controlfile.

这是某人成功地直接加载时间戳数据的示例:
加载数据(第4部分):sqlldr(直接,skip_index_maintainance)

附带说明一下,假设我们使用的是较新版本的Oracle,我们大多数人都不再使用sql loader作为更高级版本的External Tables。