데이터베이스의 데이터를 추출해서 다른 IP 주소로 옮기기 위해서는, 데이터를 파일로 추출한 후, 그 파일을 타겟 IP 주소의 시스템으로 전송하고, 전송된 파일을 타겟 시스템의 데이터베이스에 로드하는 과정을 거쳐야 합니다.
아래 단계에 따라 진행할 수 있습니다
전제 조건 : node.js, npm, odbc 설치가 되어있고 odbcinst.ini와 odbc.ini가 작성되어야한다.
자세한건 ODBC로 DB 연결 하는 방법 참고!
현재 시스템에서 데이터를 CSV 파일로 추출합니다. 예를 들어, Node.js를 사용하여 데이터를 CSV 파일로 추출할 수 있습니다.
먼저, csv-writer 패키지를 설치합니다.
npm install csv-writer
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 로 실행 하면 테이블을 조회하고 빈 테이블이면 칼럼정보만, 데이터값이 있으면 데이터 값을 보여주고 이후 칼럼 정보까지 출력해준다.
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 파일로 저장합니다.
파일을 현재 시스템 ip(192.168.x.x)에서 타겟 시스템 ip(192.168.y.y)로 전송합니다.
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데이터베이스를 조회하여 편하게 사용 가능하다.