现象
Trafodion在使用trafci.sh -s xxx.sql或sqlci -i xxx.sql执行一个SQL脚本时,报无法识别^M的错误。
原因
这个问题一般发生在SQL脚本文件是从Windows上面编辑并传输到Linux环境中发生,由于Windows与Linux的编码方式不一致导致。
解决
使用file命令查看文件的编码,
[trafodion@esgyn01 ~]$file dehz_trafodion_ddl.txt
dehz_trafodion_ddl.txt: UTF-8 Unicode text, with CRLF line terminators
使用dos2unix转换文件编码,
[trafodion@esgyn01 ~]$ dos2unix -n dehz_trafodion_ddl.txt dehz_trafodion_ddl.txt
dos2unix: converting file dehz_trafodion_ddl.txt to file dehz_trafodion_ddl.txt in UNIX format ...
再次使用file命令查看文件编码是否修改成功,
[trafodion@esgyn01 ~]$ file dehz_trafodion_ddl.txt
dehz_trafodion_ddl.txt: UTF-8 Unicode text