PowerShell에서 SQL Plus 스크립트를 실행하는 방법
PowerShell을 사용하여 Oracle DB에 로그인하고 "C:" 스크립트를 실행하려고 합니다.\Users\Administrator\Desktop\oracle\OracleCleanTest.sql", PS를 실행하면 아무 일도 일어나지 않습니다.
이것이 제가 가진 것입니다.
$adminLogon = "sys as sysdba/manager@ORCL"
$logon = "sqlplus\sql/manager@ORCL"
$mydata = Invoke-SqlPlus -inputfile "@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql" $logon
저도 이거 먹어봤어요.
$database = "ORCL";
$user = "sys as sysdba";
$pw = "manager";
sqlplus.exe -d $database -U $user -P $pw -I "@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql"
이거 먹어봤어요.
& 'C:\app\Administrator\product\11.2.0\client_1\BIN\sqlplus.exe' 'QE-JDBC-1/manager@ORCL sys as sysdba' '@C:\Users\Administrator\Desktop\oracle\OracleCleanTest.sql'
"& : 모듈 'sqlplus'를 로드할 수 없습니다.자세한 내용을 보려면 'Import-Module sqlplus'를 실행하십시오.행:5 char:3 + & $mydata Invoke-SqlPlus - 입력 파일 "@C:\Users\Administrator\Desktop\Oracle\Orac...+ ~~~~ + 카테고리정보 : ObjectNotFound: (sqlplus\sql/manager@)ORCL:String) [], 상위에 오류 레코드 예외 + FullyQualifiedErrorId : Can't AutoLoadModule"이 포함되어 있습니다.
콜 교환원을 이용합니다&, Keith Hill이 제안한 "PowerShell에서 공백과 따옴표가 있는 매개변수를 사용하여 EXE 파일을 실행하는 방법"입니다.
& 'path\sqlplus.exe' 'system/password@dbase as sysdba'
공백 때문에 사용자 이름과 비밀번호를 따옴표에 넣었습니다.
스크립트를 시작하려면 다음과 같이 다른 매개 변수를 추가합니다.
& 'path\sqlplus.exe' 'system/password@dbase as sysdba' '@my_script.sql'
ORA-12154 오류를 수신하고 있고 다른 사용자가 연결을 설정한 것을 알고 있는 경우(데이터베이스 수신기가 제대로 실행되고 있음을 의미함),그런 다음 SQL*Plus에서 제 tnsname 파일을 찾을 수 있는지 검토하겠습니다.
저의 첫번째 과제는 윈도우 cmd에서 다음과 같이 tnsping이 가능한지 확인하는 것입니다.exe:
tnsping orcl
연결을 설정할 수 있거나 설정할 수 없음을 확인합니다.
만약 그렇지 않다면 환경 변수인 ORACLE_HOME이 설정되어 있는지 확인하겠습니다.SQL*Plus는 이를 사용하여 tnsname.또는 파일을 찾습니다.
설정되지 않으면 PowerShell에서 다음 문장을 실행합니다(이 환경 변수를 설정하기 위해).
[Environment]::SetEnvironmentVariable("ORACLE_HOME", "C:\app\Administrator\product\11.2.0\client_1" , "User")
다음으로 tnsping(위에서 확인)을 시도해 보겠습니다.
성공하면 위의 스크립트 실행 명령을 다시 실행해 보겠습니다.
나는 이것을(를)
$cmd = "cmd.exe"
$args = ("/c sqlplus {0}/{1}@{2}:{3}/{4} @{5} {6}" -f $userName, $password, $tnsAlias, $port, $dbInstance, $sqlScript, $outputFileName)
&$cmd $args
Windows PowerShell 명령 프롬프트에서 코드는 가변 설정이나 화려한 것을 요구하지 않습니다.그냥 이렇게 하면 됩니다.
sqlplus ElBankoUser\SupaSecretyPass "@C:\Users\ElBankoUser\Documents\MaFancySckrp.sql"
사용하시면 됩니다.NET 오라클 라이브러리 DLL 아래에 필요한 DLL 파일이 있는지 확인하십시오.lib폴더
Add-Type -Path "lib\Oracle.ManagedDataAccess.dll"
$query = "select 1 as Col1, 2 as Col2, 3 as Col3 from dual
union
select 4 as Col1, 5 as Col2, 6 as Col3 from dual
union
select 7 as Col1, 8 as Col2, 9 as Col3 from dual"
$cn = New-Object Oracle.ManagedDataAccess.Client.OracleConnection -ArgumentList "TNS-ConnectionString-Here"
$cmd = New-Object Oracle.ManagedDataAccess.Client.OracleCommand -ArgumentList $query
$cmd.Connection = $cn
try {
$cn.Open()
$reader = $cmd.ExecuteReader()
while ($reader.Read()) {
$col1 = $reader["Col1"]
$col2 = $reader["Col2"]
$col3 = $reader["Col3"]
Write-Host $col1, $col2, $col3
}
} catch {
Write-Error $_.Exception.Message
} finally {
$cmd.Dispose()
$cn.Dispose()
}
이걸 왜 안 써요?
sqlplus -s$admin로그인 "@C:\Users\Administrator\Desktop\Oracle\OracleCleanTest.sql"
-s는 sqlplus 배너를 억제합니다.
언급URL : https://stackoverflow.com/questions/24682465/how-to-run-a-sql-plus-script-in-powershell
'programing' 카테고리의 다른 글
| cv2.imshow 명령이 opencv에서 제대로 작동하지 않습니다. (0) | 2023.09.19 |
|---|---|
| PowerShell Add-Windows 기능을 인식할 수 없음 (0) | 2023.09.19 |
| wordpress WP_Query/get_posts(post_title이 같은 경우)는 모든 결과를 반환합니다. (0) | 2023.09.19 |
| Excel 2010의 함수를 연결하여 작은 따옴표와 쉼표를 추가합니다. (0) | 2023.09.19 |
| MySQL에서 기본 키이기도 한 외부 키를 만드는 방법은? (0) | 2023.09.19 |