Oracle SQL Developer在导出时忽略NLS

时间:2018-02-23 20:58:15

标签: sql oracle oracle-sqldeveloper

在导出数据时,我无法让SQL Developer(版本4.0.3.16)应用日期格式。我试图导出到SQL(即插入语句)。

我将NLS日期格式设置为DD-MON-RRRR HH24.MI.SS,如下所示:

enter image description here

实际查看工具中的数据似乎没问题,但是当它导出到SQL时,它会恢复为默认值,如下所示:

Insert into EMAIL_ADDRESS (EMAIL_ADDRESS_ID,USERID,ADDRESS,LAST_UPDATE_TS) values (100,'user','fake@email.org',to_date('24-AUG-08','DD-MON-RR'));

任何帮助?

谢谢!

3 个答案:

答案 0 :(得分:1)

升级时间。

使用当前版本17.4 - 比版本4.0新版本4年 - 这可以按预期工作。

查询数据。

导出到INSERT。

enter image description here

转到剪贴板,然后将其粘贴回工作表...并检查日期格式,使其符合首选项。

enter image description here

NLS参数中定义的DATE格式,匹配。

如果您采取不同的方式,请随意回复您所看到的内容 - 有很多不同的方式来进行导出 - 但在处理DATE时,所有这些方法都应该在首选项中遵循NLS DATE FORMAT。

如果您无法升级,请尝试使用格式提示进行手动INSERT生成。

select /*insert*/ to_char(hire_date, 'DD-MON-YYYY HH24.MI.SS') hiredate from employees;

答案 1 :(得分:1)

我从this official link下载了版本4.0.3(4.0.3.16.84) enter image description here

我以这种方式更改了NLS参数: enter image description here

具有DATE / TIMESTAMP / TIMESTAMPTZ列的表的导出工作正常

SET DEFINE OFF;

Insert into TEST.DAT (X,D,T,TZ) values (
     1,
     to_date('23-FEB-2018 22.24.15','DD-MON-RRRR HH24.MI.SS'),
     to_timestamp('23-FEB-18 10.24.15.662000000 PM','DD-MON-RR HH.MI.SSXFF AM'),
     to_timestamp_tz('24-FEB-18 05.44.25.000000000 AM EUROPE/BELGRADE','DD-MON-RR HH.MI.SSXFF AM TZR')
);

也许您可以从Oracle的网站下载相同的版本?
该版本似乎包含错误修复。

答案 2 :(得分:0)

thanks so much for the help. I'm not sure 100% sure what happen, but I tried to reproduce the issue again today and it seems to be working as expected sans upgrade (or even a restart).

Thanks anyway!