Node.js 를 배워보자

Node.js를 활용한 Oracle과 PostgreSQL 간 데이터 이동: 실전 가이드

_Blue_Sky_ 2024. 12. 5. 00:09
728x90
728x90

Node.js의 비동기 처리 특성은 다양한 데이터베이스와의 연동을 효율적으로 수행하는 데 큰 장점을 제공합니다. 이번 글에서는 Node.js를 이용하여 Oracle 데이터베이스에서 데이터를 조회하고, PostgreSQL 데이터베이스에 삽입 또는 업데이트하는 방법을 상세히 알아보겠습니다.

1. 환경 설정 및 라이브러리 설치

  • Node.js 설치: Node.js 공식 홈페이지에서 LTS 버전을 다운로드하여 설치합니다.
  • npm(Node Package Manager) 설치: Node.js 설치와 함께 자동으로 설치됩니다.
  • 라이브러리 설치:
    • Oracle: node-oracledb 패키지를 설치합니다. npm install oracledb
    • PostgreSQL: pg 패키지를 설치합니다. npm install pg
728x90

2. Node.js 코드 작성

JavaScript
const oracledb = require('oracledb');
const pg = require('pg');

// Oracle 연결 정보
const oracleConfig = {
  user: 'your_oracle_user',
  password: 'your_oracle_password',
  connectString: 'your_oracle_tns'
};

// PostgreSQL 연결 정보
const pgConfig = {
  user: 'your_postgres_user',
  host: 'your_postgres_host',
  database: 'your_postgres_database',
  password: 'your_postgres_password',
  port: 5432,
};

// Oracle에서 데이터 조회
async function queryOracle() {
  try {
    let connection = await oracledb.getConnection(oracleConfig);
    const result = await connection.execute('SELECT * FROM your_oracle_table');
    return result.rows;
  } catch (err) {
    console.error(err);
  } finally {
    if (connection) {
      try {
        await connection.close();
      } catch (err) {
        console.error(err);
      }
    }
  }
}

// PostgreSQL에 데이터 삽입/업데이트
async function insertOrUpdatePostgres(data) {
  try {
    const client = new pg.Client(pgConfig);
    await client.connect();
    for (const row of data) {
      // PostgreSQL에 맞는 INSERT 또는 UPDATE 쿼리 생성
      const query = `INSERT INTO your_postgres_table (column1, column2, ...) VALUES ($1, $2, ...) ON CONFLICT (primary_key) DO UPDATE SET ...`;
      await client.query(query, row);
    }
    await client.end();
  } catch (err) {
    console.error(err);
  }
}

async function main() {
  const oracleData = await queryOracle();
  await insertOrUpdatePostgres(oracleData);
}

main();
 

코드 설명

  1. 라이브러리 임포트: oracledb와 pg 라이브러리를 임포트합니다.
  2. 데이터베이스 연결 정보: Oracle과 PostgreSQL 연결 정보를 설정합니다.
  3. Oracle 데이터 조회: queryOracle 함수에서 Oracle 데이터베이스에 연결하여 데이터를 조회합니다.
  4. PostgreSQL 데이터 삽입/업데이트: insertOrUpdatePostgres 함수에서 조회한 데이터를 PostgreSQL에 삽입 또는 업데이트합니다. ON CONFLICT 절을 사용하여 중복 데이터 처리를 할 수 있습니다.
  5. 메인 함수: main 함수에서 위의 함수들을 호출하여 전체 로직을 실행합니다.
728x90

주의 사항 및 추가 기능

  • 에러 처리: try-catch 블록을 사용하여 오류 발생 시 적절한 처리를 해야 합니다.
  • 데이터 변환: Oracle과 PostgreSQL의 데이터 타입이 다를 경우, 데이터 변환이 필요할 수 있습니다.
  • 성능 최적화: 많은 양의 데이터를 처리할 경우, 벌크 삽입, 비동기 처리 등을 고려하여 성능을 향상시킬 수 있습니다.
  • 트랜잭션: 데이터 무결성을 위해 트랜잭션을 사용하여 여러 개의 SQL 문장을 하나의 작업 단위로 처리할 수 있습니다.
  • 커넥션 풀링: 연결 풀링을 사용하여 연결 생성 및 해제 오버헤드를 줄일 수 있습니다.

결론

Node.js를 이용하여 Oracle과 PostgreSQL 간의 데이터 이동은 비교적 간단하게 구현할 수 있습니다. 위에 제시된 코드는 기본적인 예시이며, 실제 환경에서는 프로젝트의 요구사항에 맞게 수정해야 합니다.

728x90
728x90