我在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。记事本++中的“■@”看起来像“| @”
解决了更新问题。结果是“没有看到穿过森林的树木”。我已经使用这些sql脚本好几年而没有从bash脚本调用的问题。当我尝试将bash脚本转换为powershell并遇到问题时,我将它归咎于powershell。然而;事实证明,sql文件本身有一些损坏。在notepad ++中查看文件时没有明显错误,即使单击show all symbols也是ANSI格式。当我从cmd窗口手动运行sqlplus时,我确定它是sql文件本身我仍然遇到了与PowerShell相同的错误。我重写了脚本并保存了它,问题得到解决。我应该在第一天手动运行脚本,我可能早点解决了。
一些建议
尝试调用运算符:
&sqlplus system/passwd@mydb @my_sql
尝试启动过程:
start-process -NoNewWindow -FilePath sqlplus -ArgumentList @"
system/passwd@mydb @my_sql
"@
我有典型的问题。消息是:未知命令“和” - 忽略其余行。原因是代码中的空字符串。例如select ... from ... where ... [empty string] and ... <这是一条错误信息
使用如下
sqlplus -s system/passwd@mydb "@my_sql";
如果您使用powershell中的重定向(>或>>)创建了SQL命令文件,例如:
myProgram> mySQL.out 然后运行它: &sqlplus mypw/[email protected]“@ mySQL.out”
Powershell可能已将输出文件保存为UTF-16格式,而Sqlplus不喜欢这种格式。 (您可以通过手工创建完全相同的文件进行确认,然后比较它 - 字节数将关闭,在KDiff中,您将获得文本相同的消息,但文件不是二进制相等的)。
要修复 - 你需要做两件事:
见Changing PowerShell's default output encoding to UTF-8
我收到了这个错误: SP2-0042:未知命令“■S” - 忽略其余行。 这固定了 - 或者至少我能够运行它。您也可以使用Notepad ++从一个窗口切换到另一个窗口,这将解决BOM和编码问题。