Types 如何在使用sql loader时将带有时区的时间戳转换为仅时间戳
我面临的错误如下:Types 如何在使用sql loader时将带有时区的时间戳转换为仅时间戳,types,timestamp,sql-loader,Types,Timestamp,Sql Loader,我面临的错误如下: enter code here load data infile '/u01/app/oracle/scripts/Elite_export.csv' discardfile '/u01/app/oracle/scripts/data.dis' into table TBLRADIUSCUSTOMER_TEST fields terminated by "," ( USE
enter code here
load data
infile '/u01/app/oracle/scripts/Elite_export.csv'
discardfile '/u01/app/oracle/scripts/data.dis'
into table TBLRADIUSCUSTOMER_TEST
fields terminated by ","
(
USERNAME ,
PASSWORD ,
CUSTOMERSTATUS ,
CONCURRENTLOGINPOLICY ,
RADIUSPOLICY ,
ADDITIONALPOLICY ,
PARAM1 ,
PARAM2 ,
PARAM3 ,
PARAM4 ,
CUSTOMERTYPE ,
CALLINGSTATIONID ,
CUI ,
MACVALIDATION ,
IMSI ,
MEID ,
MSISDN ,
MDN ,
GEOLOCATION ,
CREATEDATE "TO_TIMESTAMP(:CREATEDATE,'DD-MM-YY HH24:MI:SS.ff')",
LASTMODIFIEDDATE "TO_TIMESTAMP(:LASTMODIFIEDDATE,'DD-MM-YY HH24:MI:SS.ff')"
)
使用SQL Loader将数据类型从带区域的时间戳更改为时间戳时需要帮助(6)
请建议我如何在将数据加载到Oracle表时放弃时区详细信息如果您不关心时间戳,只需要日期中的数字,放弃时区信息,请使用substr放弃时区信息:
enter code here
SQL*Loader: Release 11.2.0.3.0 - Production on Mon Mar 17 12:08:44 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Control File: data.ctl
Data File: /u01/app/oracle/scripts/Elite_export.csv
Bad File: Elite_export.bad
Discard File: /u01/app/oracle/scripts/data.dis
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Bind array: 64 rows, maximum of 256000 bytes
Continuation: none specified
Path used: Conventional
Table TBLRADIUSCUSTOMER_TEST, loaded from every logical record.
Insert option in effect for this table: INSERT
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
USERNAME FIRST * , CHARACTER
PASSWORD NEXT * , CHARACTER
CUSTOMERSTATUS NEXT * , CHARACTER
CONCURRENTLOGINPOLICY NEXT * , CHARACTER
RADIUSPOLICY NEXT * , CHARACTER
ADDITIONALPOLICY NEXT * , CHARACTER
PARAM1 NEXT * , CHARACTER
PARAM2 NEXT * , CHARACTER
PARAM3 NEXT * , CHARACTER
PARAM4 NEXT * , CHARACTER
CUSTOMERTYPE NEXT * , CHARACTER
CALLINGSTATIONID NEXT * , CHARACTER
CUI NEXT * , CHARACTER
MACVALIDATION NEXT * , CHARACTER
IMSI NEXT * , CHARACTER
MEID NEXT * , CHARACTER
MSISDN NEXT * , CHARACTER
MDN NEXT * , CHARACTER
GEOLOCATION NEXT * , CHARACTER
CREATEDATE NEXT * , CHARACTER
SQL string for column : "TO_TIMESTAMP(:CREATEDATE,'DD-MM-YY HH24:MI:SS.ff')"
LASTMODIFIEDDATE NEXT * , CHARACTER
SQL string for column : "TO_TIMESTAMP(:LASTMODIFIEDDATE,'DD-MM-YY HH24:MI:SS.ff')"
value used for ROWS parameter changed from 64 to 47
Record 1: Rejected - Error on table TBLRADIUSCUSTOMER_TEST, column CREATEDATE.
ORA-01830: date format picture ends before converting entire input string
Record 2: Rejected - Error on table TBLRADIUSCUSTOMER_TEST, column CREATEDATE.
ORA-01830: date format picture ends before converting entire input string
and so on.....
Substr以“DD-MM-YY HH24:MI:SS.ff”格式获取日期部分
CREATEDATE "TO_TIMESTAMP(SUBSTR(instr(:CREATEDATE, ' ', 10),1,24),'DD-MM-YY HH24:MI:SS.ff')",
日期和时区信息之间的分隔符位置。我假设数字和tz信息之间会有一个空格,所以我使用17作为instr的起始位置,在'DD-MM-YY HH24:MI:SS'日期部分之后找到第一个空格。感谢有价值的响应,我使用简单的SUBSTR函数实现了相同的结果:斜体粗体
CREATEDATE“SUBSTR(:CREATEDATE,1,31)”,
instr(:CREATEDATE, ' ', 17)