我在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。记事本++中的“■@”看起来像“| @”
答案 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中,您会收到消息,提示文本相等,但文件不等于二进制)。>
要修复-您需要做两件事::
请参见Changing PowerShell's default output encoding to UTF-8
我收到此错误:
SP2-0042:未知命令“■S”-其余行被忽略。
这解决了-或者至少我能够运行它。您也可以使用Notepad ++将其从一个窗口剪切并粘贴到另一个窗口中,这将解决BOM和编码问题。