sftp sftp(Secure File Transfer Protocol)은 파일을 안전하게 전송하기 위한 프로토콜로 SSH(Secure Shell) 프로토콜 위에서 동작한다. SSH의 보안 기능을 활용하기 때문에 사용자 인증 및 권한 관리, 데이터의 전송 등을 암호화하여 기존 ftp보다 더욱 안전하게 사용할 수 있다. sftp 접속 기존에 SSH를 사용하고 있었다면 특별한 설정없이 사용할 수 있다. 나는 MacOS에서 터미널을 사용해 접속하고자 한다. sftp -P [포트번호] [사용자명]@[아이피주소] 명령어 기본적으로 리눅스와 동일한 명령어를 사용한다. 앞에 'local'을 뜻하는 l을 붙이면 현재 로컬에서도 경로를 이동하거나 디렉터리를 생성할 수 있다. 다만 로컬의 파일 삭제나 디렉터리 삭제는 지원..
기존 C 언어 컴파일을 위해 패키지를 설치할 때 build-essential 패키지를 설치했을 경우 gcc와 g++이 함께 설치된다. 여기서 gcc는 GNU C Compiler로 C 언어를 컴파일하는데 사용할 수 있으며 g++은 GNU C++ Compiler로 C++을 컴파일하는데 사용할 수 있다. .cpp 파일 컴파일 먼저 다음과 같이 소스 코드를 작성한 후 .cpp 확장자로 저장하였다. #include int main(void){ std::cout
레코드 (Record) 레코드는 여러 가지 데이터 타입을 가질 수 있는 복합 자료 구조이며 테이블의 한 개의 행(Row)에 대응한다. 여러 개의 컬럼과 한 개의 행을 가지는 형태로 Java에서 다양한 데이터 타입의 변수를 가지는 클래스와 비슷하다고 볼 수 있다. 레코드는 사용자 정의형, 테이블형, 커서형 레코드로 나뉜다. 1. 사용자 정의형 레코드 사용자 정의형은 사용자가 직접 컬럼 구조를 정의한 레코드이다. TYPE 레코드명 IS RECORD ( 필드명1 데이터타입 [[NOT NULL] := 기본값], 필드명2 데이터타입 [[NOT NULL] := 기본값], ... ); * 주의 필드가 NOT NULL일 경우 반드시 기본값 옵션을 사용해야 한다. DECLARE TYPE R_EMP IS RECORD( E..
1. DELETE 컬렉션의 요소를 삭제하는 프로시저. 변수명.DELETE : 모든 요소 삭제 변수명.DELETE(n) : 인덱스가 n인 요소 삭제 변수명.DELETE(n, m) : 인덱스가 n ~ m인 요소 삭제 DECLARE TYPE T_NUM_ARRAY IS TABLE OF NUMBER INDEX BY BINARY_INTEGER; NUM_ARRAY T_NUM_ARRAY; BEGIN FOR i IN 1..5 LOOP NUM_ARRAY(i) := i; END LOOP; DBMS_OUTPUT.PUT_LINE('NUM_ARRAY 출력 (삭제 전)'); FOR i IN 1..NUM_ARRAY.COUNT LOOP DBMS_OUTPUT.PUT_LINE(NUM_ARRAY(i)); END LOOP; NUM_ARRAY..
1. 컬렉션 (Collection) PL/SQL에서 다양한 데이터 타입을 가지면서 여러 로우(Row)에 해당하는 데이터를 가질 수 있는 자료 구조이다. 다른 프로그래밍 언어에서 볼 수 있는 리스트나 맵과 비슷한 기능을 한다. TYPE 키워드를 사용해서 사용할 컬렉션의 구조를 정의할 수 있다. 주의해야할 점은 실제로 사용할 컬렉션은 TYPE 키워드로 선언한 타입을 사용해서 변수를 다시 한 번 선언해주어야 한다. 또한 PL/SQL의 컬렉션의 인덱스는 다른 프로그래밍 언어의 배열과 다르게 1부터 시작한다. DECLARE TYPE 타입명 IS TABLE OF NUMBER INDEX BY INTEGER_BINARY; -- TYPE 선언 변수명 타입명; -- 해당 TYPE을 가지는 컬렉션 변수 선언 BEGIN EN..
PL/SQL의 SELECT ~ INTO ~ 구문에서 INTO 앞에 BULK COLLECT 키워드를 사용하면 여러 개의 행이 반환될 때 데이터를 한 번에 받을 수 있다. DECLARE TYPE FRU_TAB IS TABLE OF FRUITS%ROWTYPE INDEX BY BINARY_INTEGER; FRU_TAB_OBJ FRU_TAB; BEGIN SELECT * BULK COLLECT INTO FRU_TAB_OBJ FROM FRUITS ORDER BY 1; FOR I IN 1..FRU_TAB_OBJ.COUNT LOOP DBMS_OUTPUT.PUT_LINE('ID : ' || FRU_TAB_OBJ(I).ID || ', NAME : ' || FRU_TAB_OBJ(I).NAME || ', PRICE : ' ||..
두 개의 테이블을 조인할 때 조인 조건으로 사용할 컬럼이 있어야한다. 다음 함수는 두 개의 테이블에서 서로 같은 이름을 가진 컬럼을 가져와 조인 조건절 형태로 반환해준다. CREATE OR REPLACE FUNCTION get_joinable_columns ( p_table_1 USER_TABLES.TABLE_NAME%TYPE, -- 비교 테이블 대상 1 p_table_2 USER_TABLES.TABLE_NAME%TYPE -- 비교 테이블 대상 2 ) return VARCHAR2 IS v_join_clause VARCHAR2(4000); TYPE column_array IS VARRAY(10) OF VARCHAR2(4000); v_column_array column_array; BEGIN SELECT *..