oracle Alter Session NLS FORMAT for bulk insert statements - 行为不符合预期
Posted
技术标签:
【中文标题】oracle Alter Session NLS FORMAT for bulk insert statements - 行为不符合预期【英文标题】:oracle Alter Session NLS FORMAT for bulk insert statements - not behaving as expected 【发布时间】:2019-05-03 17:56:48 【问题描述】:我已经以插入语句的格式从 SQL DB 中导出了表信息。许多表包含 YYYY-MM-DD HH24:MI:SS 格式的时间戳信息。由于有数百个这样的语句,因此在每个日期中添加 TO_DATE() 语句对我来说是不现实的。我认为更改会话 NLS DATE 格式可以解决此问题,但是我仍然收到有关 ORA-01843: not a valid month
的错误。
列数据类型为TIMESTAMP
。
示例:
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS'
INSERT INTO gcGovernance (id, userID, grantAppID, grantAppUUID,
grantCommCatID, grantApprovalCmnt, grantApprovalDate) VALUES (758, 163,
408, 'iahfahfahashvai', 0, '', '2016-12-20
14:32:17');
【问题讨论】:
【参考方案1】:如果接收列是TIMESTAMP,则需要设置NLS_TIMESTAMP_FORMAT
,而不是NLS_DATE_FORMAT
。
【讨论】:
【参考方案2】:你可以尝试使用timestamp'YYYY-MM-DD HH24:MI:SS'
的格式
在该示例中insert
声明,例如
timestamp'2016-12-20 14:32:17'
用于grantApprovalDate
列。
Demo
【讨论】:
以上是关于oracle Alter Session NLS FORMAT for bulk insert statements - 行为不符合预期的主要内容,如果未能解决你的问题,请参考以下文章
如何仅保留某个数据库的 Alter Session Set 变量?
Oracle数据库插入日期格式字符串给date类型字段,nls_date_format参数值作用
Oracle SQL - 在同一个 alter_session_set_clause 中为多个参数设置值
oracle for update锁表资源释放之kill -9和alter system kill session 'sid,serial#';