最近几天在家休假,同事打电话来问在用sql批量插入日期格式数据的时候出现了ORA-01861: 文字与格式字符串不匹配,在不修改insert语句与oracle日期格式的前提下,怎么解决这个问题。
简单模拟一下解决过程。
Connected to Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 Connected as report
SQL> create table T_DATE 2 ( 3 D DATE, 4 S VARCHAR2(20) 5 );Table created
SQL> insert into t_date values('2011-02-19',1);insert into t_date values('2011-02-19',1)ORA-01861: 文字与格式字符串不匹配
SQL> ALTER session SET nls_date_format = "YYYY-MM-DD";Session altered
SQL> insert into t_date values('2011-02-19',1);1 row inserted
SQL> COMMIT;
Commit complete
SQL> SELECT * FROM t_date;D S----------- --------------------2011-02-19 1
同事测试成功,又问道:我有几千个单独的sql脚本。每个sql都要加ALTER session SET nls_date_format = "YYYY-MM-DD";岂不是很麻烦?
答:只设置一遍,把这些sql脚本集中放到一个sql里来执行就可以了。
如:ALTER session SET nls_date_format = "YYYY-MM-DD";@D:/1.sql@D:/2.sql。。。@D:/1000.sql
保存为start.SQL,直接执行这个start.SQL就ok了。
