在导入SQL文件是出现,表导入正确,但是数据没有成功导入。
1,先找问题所在:
复制一个insert的语句在Navicat进行测试,出现报错。
ORA-01843: not a valid month
2,确认问题:
在网上搜了一下,说是日期转换的问题。(我的数据中日期数据是中文格式的)
问题所在:
客户端nls_date_language为AMERICAN
3,解决问题
修改nls_date_language参数为中文
-- 该命令只是当前会话有用
ALTER SESSION SET nls_date_language='SIMPLIFIED CHINESE';
上面的操作有个缺陷是支队当前会话有用。在新建查询里面插入一两条数据是可以使用的。
但是我是要运行sql文件的,这个方法好像就不能用了。
因此,就另寻其他方法了。
既然是时间中文转换的问题,那能不能再sql语句里面进行添加上SIMPLIFIED CHINESE直接转换。
然后我就找怎么在sql语句里面配置的方法。
Oracle不同系统之间时间转换(NLS_DATE_LANGUAGE )
--英文:
SELECT TO_CHAR(sysdate,
'MM/DD/YYYY HH:MI AM',
'NLS_DATE_LANGUAGE = American')
FROM DUAL
--日文:
SELECT TO_CHAR(sysdate,
'MM/DD/YYYY HH:MI AM',
'NLS_DATE_LANGUAGE = Japanese')
FROM DUAL
--中文:(特别注意NLS_DATE_LANGUAGE多两个单引号)
SELECT TO_CHAR(sysdate,
'MM/DD/YYYY HH:MI AM',
'NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE''')
FROM DUAL
有了上面的方法就很好解决了。
于是就在sql文件里把所有的日期格式转换后添加上:
'NLS_DATE_LANGUAGE = ''SIMPLIFIED CHINESE'''
最后再运行sql文件,完美成功。
在网上搜索链接:https://www.cnblogs.com/chonghaojie/p/9994625.html
https://my.oschina.net/u/2614542/blog/857830