powershell / sqlplus错误SP2-0042:未知命令“■@” - 忽略其余行

时间:2012-07-24 13:27:19

标签: powershell sqlplus

我在powershell中运行此命令:

sqlplus system/passwd@mydb  @my_sql

我尝试过使用和不使用反引号以及我通过Google找到的各种其他版本。当命令传递给sqlplus并且找不到修复程序时,我一直收到错误。希望有人可以帮忙吗?

我得到的错误是:

Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

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

所以我成功连接到数据库,但是在'@'前面有一个额外的字符传递给sqlplus。记事本++中的“■@”看起来像“| @”

6 个答案:

答案 0 :(得分:1)

更新问题已解决。事实证明,没有看到树木穿过森林"。我已经使用这些sql脚本好几年而没有从bash脚本调用的问题。当我尝试将bash脚本转换为powershell并遇到问题时,我将它归咎于powershell。然而;事实证明,sql文件本身有一些损坏。在notepad ++中查看文件时没有明显错误,即使单击show all symbols也是ANSI格式。当我从cmd窗口手动运行sqlplus时,我确定它是sql文件本身我仍然遇到了与PowerShell相同的错误。我重写了脚本并保存了它,问题得到解决。我应该在第一天手动运行脚本,我可能早点解决。

答案 1 :(得分:1)

我有同样的问题。我的问题是由于脚本文件另存为unicode引起的。我不知道这是否对您有帮助,但是这是我的解决方法:

使用记事本编辑脚本。单击文件->另存为。将类型从Unicode(或其他类型)更改为ANSI,然后保存。

答案 2 :(得分:0)

一些建议

尝试调用运算符:

&sqlplus system/passwd@mydb @my_sql

尝试启动过程:

start-process -NoNewWindow -FilePath sqlplus -ArgumentList @"
system/passwd@mydb @my_sql
"@

答案 3 :(得分:0)

我有典型的问题。消息是: 未知命令“和” - 忽略其余行。 原因是代码中的空字符串。 例如 选择 ... 来自...... 哪里...... [空字符串] 和...<这是一条错误消息

答案 4 :(得分:0)

使用如下

sqlplus -s system/passwd@mydb  "@my_sql";

答案 5 :(得分:0)

如果您在Powershell中使用重定向(>或>>)创建了SQL命令文件-


myProgram> mySQL.out
然后像这样运行它:    
&sqlplus mypw/myuser@mydb.xyz.com“ @ mySQL.out”

Powershell可能已将输出文件保存为UTF-16格式,而Sqlplus不喜欢这种格式。 (您可以通过手工创建完全相同的文件然后进行比较来进行确认-字节计数将关闭,并且在KDiff中,您会收到消息,提示文本相等,但文件不等于二进制)。

要修复-您需要做两件事::

  1. 在SQL命令的顶部添加一些空行-Powershell仍将在其中写入BOM(字节顺序标记),看起来很难避免它-但是sqlplus会通过它,尽管给出错误-但将继续进行其余的代码确定。
  2. 然后在Powershell中运行此命令,然后再创建文件: $ PSDefaultParameterValues ['Out-File:Encoding'] ='utf8'

请参见Changing PowerShell's default output encoding to UTF-8

我收到此错误:
SP2-0042:未知命令“■S”-其余行被忽略。
这解决了-或者至少我能够运行它。您也可以使用Notepad ++将其从一个窗口剪切并粘贴到另一个窗口中,这将解决BOM和编码问题。