고운소프트 / EntityCopy

소프트

고운소프트 / EntityCopy

리치 앱

제품 > EntityCopy

Tue May 27 09:41:23 KST 2025

1. 개요

EntityCopy는 DCL로 개발된 데이터베이스 데이터 복사 유틸리티입니다.

DCL은 Linux를 비롯한 UNIX 운영체제와 Microsoft Windows 운영체제에서 소스프로그램 수준의 이식성있는 C++ 클래스 라이브러리 입니다.

DCL에는 Firebird, InterBase, Informix, MariaDB, MySQL, Oracle Database 네이티브 C 프로그래밍 언어 API를 사용한 드라이버 구현을 포함합니다.

EntityCopy는 데이터베이스 스키마에 포함된 테이블 전체 또는 일부를 서로다른 벤더(vendor)의 데이터베이스로 복사할 수 있습니다.

EntityCopy는 데이터베이스간 DDL을 생성하지 않으며, TRUNCATE(or DELETE), SELECT, INSERT를 사용하여 데이터를 단순 복사합니다.

2. 다운로드

3. Linux 구성

3.1. dcl

배포 패키지의 압축을 풀면 dcl 디렉토리에 다음의 파일이 포함되어 있습니다. 파일명이 'D' 또는 'd'로 종결되는 파일은 DEBUG 빌드된 것을 표시합니다.

bin은 PATH에 포함시키고, lib는 LD_LIBRARY_PATH에 포함시킵니다.

  • bin

    • entitycopy, entitycopyD
  • lib

    • libDCLCore.so, libDCLCored.so
    • DCLFirebird.so, DCLFirebirdd.so
    • DCLInformix.so, DCLInformixd.so
    • DCLInterBase.so, DCLInterBased.so
    • DCLMariaDB.so, DCLMariaDBd.so
    • DCLOracleDb.so, DCLOracleDbd.so
    • DCLPostgreSQL.so, DCLPostgreSQLd.so

    다음은 Linux 환경변수 구성의 예입니다.

1export FIREBIRD='/opt/firebird-5.0.2'
2export INFORMIXDIR='/opt/informix-csdk-4.50'
3export INTERBASE='/opt/interbase-14.6'
4export ORACLE_HOME='/opt/oracle-client-21.3'
5export PATH=${PATH}:${INFORMIXDIR}/bin:${ORACLE_HOME}/bin
6export LD_LIBRARY_PATH=/opt/dcl/lib:${FIREBIRD}/lib:${INFORMIXDIR}/lib:${INFORMIXDIR}/lib/esql:${INTERBASE}/lib:${ORACLE_HOME}/lib

3.2. Firebird

FIrebird 서버패키지에서 libfbclient.so가 포함된 lib 디렉토리를 LD_LIBRARY_PATH에 포함시킵니다.

3.3. Informix

Informix 드라이버는 Informix ESQL/C로 구현되어 있습니다.

Informix CSDK를 설치한 후, ${INFORMIXDIR}/lib/esql 디렉토리를 LD_LIBRARY_PATH에 포함시킵니다.

3.4. InterBase

InterBase 서버패키지에서 libgds.so가 포함된 lib 디렉토리를 LD_LIBRARY_PATH에 포함시킵니다.

3.5. MariaDB

MariaDB 드라이버는 MariaDB Connector/C로 빌드 되었습니다.
다음과 같이 이를 설치합니다.

1# Ubuntu, Debian
2apt update; apt install -y libmariadb
3
4# RHEL, Rocky, Oracle Linux
5dnf install -y mariadb-connector-c

3.6. Oracle Database

Oracle Instant Client를 설치 한 후, libclntsh.so가 포함된 디렉토리를 LD_LIBRARY_PATH에 포함시킵니다.

Ubuntu 24.04 noble의 경우 libaio1t64 배포 패키지에 오류가 있습니다.

1# dpkg -L libaio1t64
2sudo ln -s /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1

3.7. PostgreSQL

PostgreSQL 드라이버는 PostgreSQL Client Interfaces로 빌드 되었습니다.
다음과 같이 이를 설치합니다.

1# Ubuntu, Debian
2apt update; apt install -y libecpg6
3
4# RHEL, Rocky, Oracle Linux
5dnf install -y libecpg

4. Windows 구성

4.1. dcl

배포 패키지의 압축을 풀면 dcl 디렉토리에 다음의 파일이 포함되어 있습니다. 파일명이 'D' 또는 'd'로 종결되는 파일은 DEBUG 빌드된 것을 표시합니다.

DCL을 PATH에 포함시킵니다.

  • DCL

    • DCLCore.dll, DCLCored.dll
    • DCLFirebird.dll, DCLFirebirdd.dll
    • DCLInformix.dll, DCLInformixd.dll
    • DCLInterBase.dll, DCLInterBased.dll
    • DCLMariaDB.dll, DCLMariaDBd.dll
    • DCLOracleDb.dll, DCLOracleDbd.dll
    • DCLPostgreSQL.dll, DCLPostgreSQLd.dll
    • EntityCopy.exe, EntityCopyD.exe
    • expat.dll, expatd.dll
1set DCL=D:\Opt\DCL
2set FIREBIRD=D:\Opt\Firebird
3set INFORMIXDIR=D:\Opt\informix
4set INTERBASE=D:\Opt\InterBase
5set MARIADB=D:\Opt\mariadb-connector-c-3.4.3
6set ORACLE_HOME=D:\Opt\oracle21_client_home
7set POSTGRESQL=D:\Opt\PostgreSQL17
8set Path=%Path%;%DCL%;%FIREBIRD%;%INFORMIXDIR%\bin;%INTERBASE%\bin;%MARIADB%\lib64;%ORACLE_HOME%\bin;%POSTGRESQL%\bin

4.2. Microsoft Visual C++ Redistributable

배포 패키지는 Visual Studio 2022로 빌드되었습니다.
필요한 경우 다음에서 다운로드하여 설치합니다.

https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist

4.3. Firebird

FIrebird 서버패키지에서 fbclient.dll이 포함된 디렉토리를 PATH에 포함시킵니다.

4.4. Informix

Informix 드라이버는 Informix ESQL/C로 구현되어 있습니다.

Informix CSDK를 설치한 후, ${INFORMIXDIR}\bin 디렉토리를 PATH에 포함시킵니다.

4.5. InterBase

InterBase 서버패키지에서 ibclient64.dll이 포함된 bin 디렉토리를 PATH에 포함시킵니다.

4.6. MariaDB

MariaDB Connector/C Windows 바이너리를 설치한 후, libmariadb.dll이 포함된 lib64 디렉토리를 PATH에 포함시킵니다.

4.7. Oracle Database

Oracle Instant Client를 설치 한 후, oci.dll이 포함된 디렉토리를 PATH에 포함시킵니다.

legacy.dll, oci.dll, oraociicus.dll 세 파일만 있어도 동작합니다.

4.8. PostgreSQL

PostgreSQL Windows 클라이언트를 별도의 패키지로 배포하지 않는 것 같습니다.

PostgreSQL Windows installers를 다운로드 한 후, bin 디렉토리를 PATH에 포함시킵니다.

PostgreSQL 드라이버는 libpq, libecpg를 사용하도록 빌드되었습니다. Windows에서 이 외에 필요한 파일은 본 문서의 하단에 별도로로 표기되어 있습니다.

5. 사용

5.1. 실행

1# Windows
2EntityCopy.exe ^
3  --source="DRIVER=DCLFirebird;USER=TIMETABLE;PASSWORD=TIMETABLE;SERVER=g02u24kn2/32055;DATABASE=TIMETABLE" ^
4  --destination="DRIVER=DCLInterBase;USER=SYSDBA;PASSWORD=masterkey;SERVER=n0317ud70p/3050;DATABASE=TIMETABLE-UTF8" ^
5  --truncate --verbose --dry-run
6
7EntityCopy.exe ^
8  --source="DRIVER=DCLFirebird;USER=NETIS;PASSWORD=NETIS;SERVER=g02u24kn2/32055;DATABASE=NETIS" ^
9  --destination="DRIVER=DCLInterBase;USER=SYSDBA;PASSWORD=masterkey;SERVER=n0317ud70p/3050;DATABASE=NETIS-UTF8" ^
10  --truncate --rows=100000 --verbose --dry-run
11
12EntityCopy.exe --source="DRIVER=DCLOracleDb;USER=MT100;PASSWORD=MT100;DATABASE=g02r08od21:1521/AL32UTF8" ^
13  --destination="DRIVER=DCLInterBase;USER=SYSDBA;PASSWORD=masterkey;SERVER=n0317ud70p/3050;DATABASE=MT100" ^
14  --truncate --rows=100000  --i8-precision=20 --verbose --dry-run
15
16# Linux 
17entitycopy \
18  --source="DRIVER=DCLFirebird;USER=TIMETABLE;PASSWORD=TIMETABLE;SERVER=g02u24kn2/32055;DATABASE=TIMETABLE" \
19  --destination="DRIVER=DCLInterBase;USER=SYSDBA;PASSWORD=masterkey;SERVER=n0317ud70p/3050;DATABASE=TIMETABLE-UTF8" \
20  --truncate --verbose --dry-run
21
22entitycopy \
23  --source="DRIVER=DCLFirebird;USER=NETIS;PASSWORD=NETIS;SERVER=g02u24kn2/32055;DATABASE=NETIS" \
24  --destination="DRIVER=DCLInterBase;USER=SYSDBA;PASSWORD=masterkey;SERVER=n0317ud70p/3050;DATABASE=NETIS-UTF8" \
25  --truncate --rows=10000 --verbose --dry-run

5.2. 데이터베이스 연결

1DRIVER=DCLFirebird;  USER=MT100;PASSWORD=YourPass;SERVER=g02u24kn2/32055;DATABASE=MT100
2DRIVER=DCLInformix;  USER=mt100;PASSWORD=YourPass;SERVER=informix02;DATABASE=mt100
3DRIVER=DCLInterBase; USER=MT100;PASSWORD=YourPass;SERVER=n0317ud70p/3050;DATABASE=MT100
4DRIVER=DCLMariaDB;   USER=MT100;PASSWORD=YourPass;SERVER=g02u24kn2;PORT=32011;DATABASE=MT100
5DRIVER=DCLOracleDb;  USER=MT100;PASSWORD=YourPass;DATABASE=g02r08od21:1521/AL32UTF8
6DRIVER=DCLPostgreSQL;USER=MT100;PASSWORD=YourPass;DATABASE=tcp:postgresql://g02u24kn2:32017/MT100