能否在以UTF-8带BOM编码的文件上运行SQLPLUS脚本?

8

我正在尝试运行一系列脚本,这些脚本是从许多来源自动生成的。不幸的是,其中一些以UTF-8带BOM的形式生成。我已经建立了一个用于自动删除BOM的系统,但这个过程有点混乱。

未能删除BOM会产生以下错误:

SP2-0042: unknown command "" - rest of line ignored.

可以在具有BOM的脚本文件上运行SQLPLUS吗?


1
没什么头绪,但我会先查看客户端字符集设置,看是否与UTF-8不同。实际上,如果是自动化的话,我会保留去除BOM的过程。 - Shannon Severance
2个回答

6

这个问题已经向Oracle反馈了6年,但看起来他们对修复此问题并不感兴趣。

他们的“推荐解决方法”(文档编号 788156.1 第C.6节)是去掉BOM或将第一行脚本变成注释,然后忽略此错误。

SP2-0042: 未知命令 "∩╗┐" - 忽略该行其余内容。

或者

SP2-0734: 未知命令开头为“-- Commen...” - 忽略该行其余内容。

Bug 13515585详细信息(需要OTN登录):

Bug 13515585: ADD SUPPORT FOR THE UTF-8 BOM IN SQLPLUS
Bug Status: Internal (Oracle) Review 
Created: 19-Dec-2011 
Updated: 29-Sep-2015

4

可以使用这样的脚本运行SQLPLUS,但是由于BOM的原因,SQLPLUS会在第一行指示错误。
可能你想问是否可以避免此错误- 不可能,据我所知。 Erwin也这样认为。

您可以通过生成具有空白第一行的文件来解决丢失任何信息的问题。然后您可以忽略此错误。


1
很遗憾,SQL脚本作为KSH脚本的一部分使用。SQLPlus的错误输出会导致KSH脚本出错。感谢回复。这证实了需要进行BOM剥离。 - Philip Couling

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接