환경
oracle 10g(외부 망)
docker mysql container
Oracle 데이터베이스에서 데이터를 CSV 파일로 추출한다. 이를 위해 SQLPlus 또는 SQL Developer와 같은 도구를 사용한다..
아래는 SQLPlus를 사용하여 데이터를 CSV 파일로 추출하는 예시
(shell script 작성)
#!/bin/bash
# Oracle DB credentials
USERNAME="your_username"
PASSWORD="your_password"
HOST="localhost"
PORT="1521"
SID="orcl"
# Output file
OUTPUT_FILE="output.csv"
# SQL query
SQL_QUERY="SELECT EMPNO, NAME, MAILNO FROM your_table"
# Run sqlplus and execute the query
echo "SET HEADING OFF
SET COLSEP ','
SET LINESIZE 32767
SET FEEDBACK OFF
SET PAGESIZE 0
SET TRIMSPOOL ON
SPOOL $OUTPUT_FILE
$SQL_QUERY;
SPOOL OFF
EXIT" | sqlplus -s $USERNAME/$PASSWORD@$HOST:$PORT/$SID
echo "Data exported to $OUTPUT_FILE"
테이블에 넣기 위해서 몇가지 사전 준비작업이 필요하다.
1. 옮기려고하는 mysql docker container에서 secure_file_priv 경로를 확인한다.
SHOW VARIABLES LIKE 'secure_file_priv';
// host에서 실행하는 명령어 (to docker container)
docker cp /output.csv파일이 있는 host경로/output.csv container_name:/secure_file_priv경로/
chmod 644 /secure-file-priv경로/output.csv
이 명령은 소유자에게 읽기/쓰기 권한을 부여하고, 그룹 및 기타 사용자에게 읽기 권한만 부여합니다.
chown mysql:mysql /secure-file-priv경로/output.csv
LOAD DATA INFILE '/secure_file_priv 경로/output.csv'
INTO TABLE USER_TBL
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, EMPNO, NAME, MAILNO, createdAt, updatedAt, isApproval, DEPT_NAME, PHONENO, POSITIONId);
docker exec -i your_mysql_container mysql -uyour_username -pyour_password han < load_data.sql