最近几天在家休假,同事打电话来问在用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了。