문제/Linux

240104 Oracle DB Linux 문제

잇꼬 2024. 1. 4. 15:46
728x90
반응형
SMALL

[문제1] hr.employees 테이블에서 2005년 이전에 입사한 사원들의 employee_id, last_name, salary, hire_date 데이터를 추출해서 emp_befor_2005.dat 파일로 저장해주세요.

[oracle1@oracle spool]$ vi emp_before_2005.dat

set pagesize 0
set linesize 200
set echo off
set termout off
set trimspool on 
set feedback off
spool emp_before_2005.csv
select employee_id||','||last_name||','||salary||','||hire_date
from hr.employees
where hire_date < to_date('2005-01-01','yyyy-mm-dd');
spool off

[oracle1@oracle spool]$ sqlplus hr/hr
SQL> ! pwd
/home/oracle1/spool
SQL> ! ls
emp_before_2005.dat  emp_sal.csv  emp_sal.log  insa.ctl  insa.log
emp_sal.bad          emp_sal.ctl  emp_sal.sql  insa.dat
SQL> @emp_before_2005.dat
SQL> ! ls
emp_before_2005.csv  emp_sal.bad  emp_sal.ctl  emp_sal.sql  insa.dat
emp_before_2005.dat  emp_sal.csv  emp_sal.log  insa.ctl     insa.log

/* 강사님 답안 */
[oracle1@oracle spool]$ vi emp_before_2005.sql

set pagesize 0
set linesize 200
set echo off
set termout off
set trimspool on 
set feedback off
spool emp_before_2005.dat
-- 또는 spool emp_before_2005.csv 
select employee_id||','||upper(last_name)||','||salary||','||to_char(hire_date, 'yyyy-mm-dd')
from hr.employees
where hire_date < to_date('2005-01-01','yyyy-mm-dd');
spool off

[oracle1@oracle spool]$ sqlplus hr/hr
SQL> @emp_before_2005.sql

[문제2] emp_before_2005.dat 파일에 있는 데이터를 SQL LOADER 를 이용해서 hr.emp_before_2005 테이블에 로드해주세요.
CREATE TABLE hr.emp_before_2005(
    employee_id number, 
    last_name varchar2(20),
    salary number, 
    hire_date date );
    
[oracle1@oracle spool]$ vi emp_before_2005.ctl

UNRECOVERABLE LOAD DATA
INFILE emp_before_2005.csv
INSERT 
INTO TABLE hr.emp_before_2005
FIELDS TERMINATED BY ','
(employee_id, last_name, salary, hire_date)

[oracle1@oracle spool]$ sqlldr hr/hr control=emp_before_2005.ctl direct=true

SELECT * FROM hr.emp_before_2005;

/* 강사님 답안 */
CREATE TABLE hr.emp_before_2005(
    employee_id number, 
    last_name varchar2(20),
    salary number, 
    hire_date date );
    
[oracle1@oracle spool]$ vi emp_before_2005.ctl

UNRECOVERABLE LOAD DATA
INFILE emp_before_2005.dat
INSERT 
-- TRUNCATE
INTO TABLE hr.emp_before_2005
FIELDS TERMINATED BY ','
(employee_id, last_name, salary, hire_date date 'yyyy-mm-dd')

[oracle1@oracle spool]$ sqlldr hr/hr control=emp_before_2005.ctl direct=true

#) 날짜로 인해 data 확인되지 않음
SELECT * FROM hr.emp_before_2005;

728x90
반응형
LIST

'문제 > Linux' 카테고리의 다른 글

231228 Linux 복습 겸 문제  (0) 2023.12.28
231226 Linux 복습 겸 문제  (1) 2023.12.26
231218 Linux 문제 겸 test  (0) 2023.12.18
231206 Linux 문제 ⓓ 누적합  (1) 2023.12.06
231206 Linux 문제 ⓒ 제외하고 출력  (1) 2023.12.06