Выполнить SQL * Plus из PowerShell - PullRequest
1 голос
/ 09 марта 2012

Я получил два файла в C:\temp\SQL\alex.sql и в C:\temp\alex.ps1.

В C:\temp\SQL\alex.sql, то есть просто

select count(*) from user_tables;
quit;

В C:\temp\alex.ps1, то есть

$cmd = "sqlplus";
$args = "user/password@server/sid @C:\temp\SQL\alex.sql";
&$cmd $args;

Я попробовал команду в командной строке

sqlplus user/password@server/sid @C:\temp\SQL\alex.sql, которая была выполнена отлично!

Файл SQL не выполняется вообще, но SQL * Plus help показано.

Что я сделал не так?Спасибо!

Ответы [ 2 ]

3 голосов
/ 09 марта 2012

Я сам нашел решение

Я использую cmd.exe /c и alex.ps1 теперь

$cmd = "cmd.exe";
$args = "/c sqlplus user/password@server/sid @C:\temp\SQL\alex.sql";
&$cmd $args;

Надеюсь, эта помощь.

0 голосов
/ 07 декабря 2016

Чтобы предложить альтернативное решение @Alex Yeung, вы можете просто использовать команду вызова PowerShell &, чтобы сразу выполнить оператор, без необходимости использовать cmd.exe:

&sqlplus user/password@server @C:\path\script.sql

Рассмотрите возможность добавленияв нижней части файла сценария убедитесь, что SQLPlus закрыт после завершения работы:

DISCO -- Disconnect
EXIT -- Exit SQLPlus
...