Oracle SQL Developer에서 상대 경로별로 스크립트 실행
먼저 이 질문은 SQL*Plus나 iSQL 등이 아닌 Oracle SQL Developer 3.2와 관련된 질문입니다.여러 번 검색을 해봤지만, 정확한 답을 찾지 못했습니다.
자동화하려는 스크립트 모음이 몇 개 있습니다(그런데 SQL 경험은 기본적이고 대부분 MS 기반입니다).문제는 상대적인 경로로 실행하는 것입니다. 예를 들어 다음과 같은 설정을 가정해 보겠습니다.
scripts/A/runAll.sql
| /A1.sql
| /A2.sql
|
/B/runAll.sql
/B1.sql
/B2.sql
파일을 갖고 싶습니다.scripts/runEverything.sql다음과 같은 것.
@@/A/runAll.sql
@@/B/runAll.sql
스크립트/A/runAll.sql:
@@/A1.sql
@@/A2.sql
어디에"@@", SQL*Plus의 상대적 경로를 의미하는 수집입니다.
저는 변수를 만들어 놓고 장난을 쳤지만 별 운이 없었습니다.저는 이와 비슷한 일을 할 수 있었습니다.'&1'루트 디렉토리를 전달합니다.예: 스크립트/runEverything입니다.sql:
@'&1/A/runAll.sql' '&1/A'
@'&1/B/runAll.sql' '&1/B'
이를 실행하여 호출합니다.
@'c:/.../scripts/runEverything.sql' 'c:/.../scripts'
하지만 여기서의 문제는B/runAll.sql다음 경로와 함께 호출됩니다.c:/.../scripts/A/B.
그렇다면 SQL Developer를 사용하여 중첩 호출을 수행하는 것이 가능하며, 그 방법은 무엇입니까?
이 접근 방식에는 두 가지 구성 요소가 있습니다.
- 활성 SQL 개발자 워크시트의 폴더를 기본 디렉터리로 설정합니다.
-runAll.sql과 같은 드라이버 스크립트를 열고(기본 디렉터리를 활성 작업 디렉터리로 변경) runAll.sql 스크립트 내의 상대 경로를 사용하여 형제 스크립트를 호출합니다.
스크립트 기본 폴더를 설정합니다.SQL 개발자 도구 모음에서 다음 탐색을 사용합니다.
도구 > 환경설정
기본 설정 대화 상자에서 데이터베이스 > 워크시트 > 스크립트를 찾을 기본 경로를 선택합니다.
스크립트를 활성 작업 디렉토리로 찾으려면 기본 경로를 입력합니다.
"${file.dir}"
스크립트 파일을 만들고 이 파일에 연결된 모든 스크립트를 배치합니다.
runAll.sql
A1.sql
A2.sql
runAll.sql의 내용은 다음과 같습니다.
@A1.sql;
@A2.sql;
이 방법을 테스트하려면 SQL 개발자에서 파일을 클릭하고 스크립트\runAll.sql 파일을 탐색하여 엽니다.
그런 다음 워크시트에서 모두를 선택하고 실행합니다.
runAll.sql 워크시트를 탐색하고 여는 동작을 통해 기본 파일 폴더는 "script"가 됩니다.
지금은 SQL 개발자에 액세스할 수 없기 때문에 상대적인 경로를 실험할 수는 없지만 대체 변수에 대해서는 위치 변수(즉, 위치 변수)가 문제라고 생각합니다.&1)에 의해 재정의됩니다.start아니면@. 그래서 너의 첫번째 이후에@runAll, 부모 스크립트는 동일한 것을 봅니다.&1마지막 아이가 본 것, 그리고 지금은 그 아이를 포함합니다./A.
마스터 스크립트에서 자신의 변수를 정의하면 이를 방지할 수 있습니다.
define path=&1
@'&path/A/runAll.sql' '&path/A'
@'&path/B/runAll.sql' '&path/B'
하는 한은runAll.sql, 실행되는 모든 것은 실행되지 않습니다(재define).path이것은 효과가 있을 것이고 충돌의 위험이 있는 경우에는 고유한 이름을 선택하면 됩니다.
다시 한번 확인해 드릴 수는 없지만 과거에 정확히 이런 일을 한 적이 있다고 확신합니다.
파일의 경로를 String으로 제공해야 합니다. 패치를 이중 따옴표로 제공하면 작동합니다.
**
예를 들어 @"C:\Users\Arpan Saini\Zions R2\Reports statement and notes\패치\08312017_Patch_16.2.3.17\DB 스크립트\snsp.sql";
**
Sql 실행
@yourPath\yourFileName.sql
파일에서 매개변수를 전달하는 방법
@A1.sql; (매개변수)
@A2.sql; (파라미터)
이것은 절대적이거나 상대적인 경로 문제가 아닙니다.SQL 인터프리터 문제인데, 기본적으로 .sql 확장자가 있는 파일을 찾습니다.
파일 이름을 file_name.sql로 수정해야 합니다.
Ex: 작업 공간에 "A"라는 파일 이름이 있는 경우 파일을 A에서 "A.sql"로 이동합니다.
언급URL : https://stackoverflow.com/questions/24002623/execute-scripts-by-relative-path-in-oracle-sql-developer
'codememo' 카테고리의 다른 글
| GLib-CRITICAL **: Source ID XXX was not found when attempting to remove it (0) | 2023.09.25 |
|---|---|
| Jquery get input array 필드 (0) | 2023.09.25 |
| WooCommerce 3에서 상품 가격을 표시하기 (0) | 2023.09.20 |
| Woocommerce에서 홈페이지에 하나의 가변 상품 페이지를 표시하는 방법 (0) | 2023.09.20 |
| C에서 포인터의 크기가 달라집니까? (0) | 2023.09.20 |