我第一次尝试在PowerShell脚本中使用sqlplus执行Oracle查询。我收到这个错误消息:
At line:1 char:73
+ ... user/pw@RRRPRD.company.net:1521/RRRPRDC @"C:Users ...
+ ~
No characters are allowed after a here-string header but before the end of the line.
它似乎指向了"@"之后的C:;。有什么想法吗?我似乎在做这个例子中的事情。当我试图对连接信息进行回声处理时,我也会遇到同样的错误。
这是我在命令行测试的powershell代码,因为它永远挂起运行程序:
sqlplus user/pw@RRRPRD.company.net:1521/RRRPRDC @"C:UsersmeDocuments2021temp endToEndshort.sql"
这是使用powershell 5.1。有什么想法吗?我在这里看到了字符串标题,但由于我使用的是上面sqlplus链接中接受的示例,所以我不清楚它出了什么问题
更换
@"C:UsersmeDocuments2021temp endToEndshort.sql"
具有以下任一项:
`@"C:UsersmeDocuments2021temp endToEndshort.sql"
"@C:UsersmeDocuments2021temp endToEndshort.sql"
'@C:UsersmeDocuments2021temp endToEndshort.sql'
注意:如果路径不包含变量引用,那么使用逐字逐句(单引号(字符串('...'
(可以说是最好的选择;如果是,则需要一个可扩展(双引号(字符串("..."
(
所有变体最终都会逐字逐句地将以下字符串传递给sqlplus
,我认为这是您的意图:
@C:UsersmeDocuments2021temp endToEndshort.sql
假设您正试图将@
作为参数的部分逐字传递给sqlplus
-CLI之间的一个常见约定是使用@<file-path>
请求从文件中获取参数数据,而不是使用参数值本身。
但是,与其他shell不同,@
是PowerShell中的元字符,可用于多种用途。
因此,应该是参数开头的逐字字符的@
必须是转义(带有`
(或是带引号字符串的一部分,如上所示。请参阅概念性about_Special_Characters帮助主题。
如果unscaped参数的首字母@
后跟"
或'
,PowerShell会认为您正在尝试创建一个here字符串,该字符串具有特殊的多行语法要求;错误消息指示它们未被满足。