연결한 DB정보 .csv파일로 추출하고 다른 타켓 시스템으로 옮기기

개발 오답 노트·2024년 11월 5일

개념정리

목록 보기
5/13

데이터베이스의 데이터를 추출해서 다른 IP 주소로 옮기기 위해서는, 데이터를 파일로 추출한 후, 그 파일을 타겟 IP 주소의 시스템으로 전송하고, 전송된 파일을 타겟 시스템의 데이터베이스에 로드하는 과정을 거쳐야 합니다.

아래 단계에 따라 진행할 수 있습니다

전제 조건 : node.js, npm, odbc 설치가 되어있고 odbcinst.ini와 odbc.ini가 작성되어야한다.

자세한건 ODBC로 DB 연결 하는 방법 참고!

1. 데이터 추출 (Export)

현재 시스템에서 데이터를 CSV 파일로 추출합니다. 예를 들어, Node.js를 사용하여 데이터를 CSV 파일로 추출할 수 있습니다.

Node.js 코드 (CSV 파일로 데이터 추출)

먼저, csv-writer 패키지를 설치합니다.


npm install csv-writer
  1. 우선 아래 코드처럼 db_read.js 라는 파일을 만들어서 테이블의 정보를 연결해서 조회한다.

const odbc = require('odbc');

async function connectToTibero() {
    try {
        const connection = await odbc.connect('DSN=tibero');
        console.log('Connected to Tibero DB');

        // 데이터베이스 작업 수행 (테이블 이름만 수정하여 실행)
        const result = await connection.query('SELECT * FROM your_table');
        console.log(result);

        // 연결 종료
        await connection.close();
        console.log('Connection closed');
    } catch (err) {
        console.error('Error connecting to Tibero DB:', err);
    }
}

connectToTibero();

node db_read.js 로 실행 하면 테이블을 조회하고 빈 테이블이면 칼럼정보만, 데이터값이 있으면 데이터 값을 보여주고 이후 칼럼 정보까지 출력해준다.

  1. 1번에서 db_read.js로 정상적인 db를 확인했다면, csv_output.js 파일을 아래와 같이 작성한다.

const odbc = require('odbc');
const createCsvWriter = require('csv-writer').createObjectCsvWriter;

async function connectAndExportToCSV() {
    try {
        const connection = await odbc.connect('DSN=tibero');
        console.log('Connected to Tibero DB');

        // 데이터베이스 작업 수행 (your_table만 테이블 명으로 수정하고 실행)
        const result = await connection.query('SELECT * FROM your_table');

        // CSV 파일 작성 (path : 'table명.csv' 로 수정하고 실행)
        const csvWriter = createCsvWriter({
            path: 'output.csv',
            header: Object.keys(result[0]).map(key => ({id: key, title: key}))
        });

        await csvWriter.writeRecords(result);
        console.log('Data has been written to CSV file');

        // 연결 종료
        await connection.close();
        console.log('Connection closed');
    } catch (err) {
        console.error('Error connecting to Tibero DB:', err);
    }
}

connectAndExportToCSV();

다음으로, node csv_output.js 로 실행하면 해당 테이블의 데이터를 CSV 파일로 추출합니다.

이 스크립트는 데이터베이스에서 데이터를 쿼리하고, 결과를 output.csv 파일로 저장합니다.

2. 파일 전송 (Transfer)

파일을 현재 시스템 ip(192.168.x.x)에서 타겟 시스템 ip(192.168.y.y)로 전송합니다.

SCP (Secure Copy) 명령어 사용


scp output.csv user@192.168.y.y:/path/to/destination/

여기서 user는 타겟 시스템의 사용자 이름이고, /path/to/destination/는 파일을 저장할 경로입니다. 본인은 scp TABLE_NAME.csv root@192.168.X.X:/root/csv/ 로 수정

위와 같이 scp 명령어를 통하여 현재 ip에서 원하는 타겟ip로 파일을 전송하고, 해당 ip에 접속하여

/root/csv/에 존재하는 csv파일을 다운로드 한 이후 DBeaver을 통해 연결한 csv데이터베이스를 조회하여 편하게 사용 가능하다.

profile
포토폴리오 https://wikidocs.net/book/10969 유튜브 링크 https://www.youtube.com/@%EC%B5%9C%EC%9B%90%EC%9D%BC-n5r

0개의 댓글