sqlplus执行sql文件报错

一:问题描述:今天别的公司给的sql文件(201901.sql),内容如下:Insert into T_ORDER (ORDER_NO,ORG_ORDER_NO,MCHNT_NO,MCHNT_NAME,ORG_NAME,ORG_ID,MD,ORDER_AMOUNT,AMOUNT,CREATED,SOURCE,PAY_ST,TIME_PAID,OPEN_ID) values ('15463005906703193844','15463005906703193844','193298','王学政源','支行','005265','转入',200000,200000,to_timestamp('01-1月 -19 07.56.30.670000000 上午','DD-MON-RR HH.MI.SSXFF AM'),0,2,to_timestamp('01-1月 -19 07.56.13.000000000 上午','DD-MON-RR HH.MI.SSXFF AM'),'694BED617AEA24F48F8E564393AFE851');

数据量大概是1000多万,所以采用批量执行sql文件来导入数据库,但是报错,两个问题!

SQL>@201901.sql

问题1,具体报错如下,这个问题是字符集的问题,

ORA-01756: quoted string not properly terminated

问题2 ,具体报错如下,这个问题是日期格式参数的问题

ORA-01843: not a valid month

然而用plssql developer工具执行一条数据,是可以成功的,这说明数据本身是没有问题,plssql developer强大之处在于它可以作为数据库和客户端的无缝兼容,格式自动转换,字符集以及其他的格式转换

二:问题解决:

一:解决字符集问题:

1.1.file -i 看文件的字符集,发现是utf-8

[oracle@ory-mysql-east-01 backup]$ file -i 2019012.sql

2019012.sql: text/plain; charset=utf-8

1.2.然后设置oracle用户的环境变量NLS_LANG(保持和文件的字符集一样)

export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
二:解决日期格式参数的问题


因为sql文件中的日期是中文的,例如:01-1月 -19 07.56.13.000000000 上午,但是数据库的日期格式是英文的,

如下所示,所以只需要修改下日期的格式即可,NLS_DATE_LANGUAGE设置为简体中文,为防止系统出现问题,只需要修改session级别的即可!

2.1.刚

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值