150 lines
4.2 KiB
Bash
Executable File
150 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================================
|
|
# 엘에스티라유텍(주) - 동부지사 (COMPANY_13) 전체 데이터 Export
|
|
#
|
|
# 사용법:
|
|
# 1. SOURCE_* / TARGET_* 변수를 수정
|
|
# 2. chmod +x migrate_company13_export.sh
|
|
# 3. ./migrate_company13_export.sh export → SQL 파일 생성
|
|
# 4. ./migrate_company13_export.sh import → 대상 DB에 적재
|
|
# ============================================================
|
|
|
|
SOURCE_HOST="localhost"
|
|
SOURCE_PORT="5432"
|
|
SOURCE_DB="vexplor"
|
|
SOURCE_USER="postgres"
|
|
|
|
TARGET_HOST="대상_호스트"
|
|
TARGET_PORT="5432"
|
|
TARGET_DB="대상_DB명"
|
|
TARGET_USER="postgres"
|
|
|
|
OUTPUT_FILE="company13_migration_$(date '+%Y%m%d_%H%M%S').sql"
|
|
|
|
# 데이터가 있는 테이블 (의존성 순서)
|
|
TABLES=(
|
|
"company_mng"
|
|
"user_info"
|
|
"authority_master"
|
|
"menu_info"
|
|
"external_db_connections"
|
|
"external_rest_api_connections"
|
|
"screen_definitions"
|
|
"screen_groups"
|
|
"screen_layouts_v1"
|
|
"screen_layouts_v2"
|
|
"screen_layouts_v3"
|
|
"screen_menu_assignments"
|
|
"dashboards"
|
|
"dashboard_elements"
|
|
"flow_definition"
|
|
"node_flows"
|
|
"table_column_category_values"
|
|
"attach_file_info"
|
|
"tax_invoice"
|
|
"auth_tokens"
|
|
"batch_configs"
|
|
"batch_execution_logs"
|
|
"batch_mappings"
|
|
"digital_twin_layout"
|
|
"digital_twin_layout_template"
|
|
"dtg_management"
|
|
"transport_statistics"
|
|
"vehicles"
|
|
"vehicle_location_history"
|
|
)
|
|
|
|
do_export() {
|
|
echo "=========================================="
|
|
echo " COMPANY_13 데이터 Export 시작"
|
|
echo "=========================================="
|
|
|
|
cat > "$OUTPUT_FILE" <<'HEADER'
|
|
-- ============================================================
|
|
-- 엘에스티라유텍(주) - 동부지사 (COMPANY_13) 전체 데이터 마이그레이션
|
|
--
|
|
-- 총 29개 테이블, 약 11,500건 데이터
|
|
--
|
|
-- 실행 방법:
|
|
-- psql -h HOST -U USER -d DATABASE -f 이_파일명.sql
|
|
-- ============================================================
|
|
|
|
SET client_encoding TO 'UTF8';
|
|
SET standard_conforming_strings = on;
|
|
|
|
BEGIN;
|
|
|
|
HEADER
|
|
|
|
for TABLE in "${TABLES[@]}"; do
|
|
COUNT=$(psql -h "$SOURCE_HOST" -p "$SOURCE_PORT" -U "$SOURCE_USER" -d "$SOURCE_DB" \
|
|
-t -A -c "SELECT COUNT(*) FROM $TABLE WHERE company_code = 'COMPANY_13'")
|
|
COUNT=$(echo "$COUNT" | tr -d '[:space:]')
|
|
|
|
if [ "$COUNT" -gt 0 ]; then
|
|
echo " $TABLE: ${COUNT}건 추출 중..."
|
|
|
|
echo "-- ----------------------------------------" >> "$OUTPUT_FILE"
|
|
echo "-- $TABLE (${COUNT}건)" >> "$OUTPUT_FILE"
|
|
echo "-- ----------------------------------------" >> "$OUTPUT_FILE"
|
|
echo "COPY $TABLE FROM stdin;" >> "$OUTPUT_FILE"
|
|
|
|
psql -h "$SOURCE_HOST" -p "$SOURCE_PORT" -U "$SOURCE_USER" -d "$SOURCE_DB" \
|
|
-t -A -c "COPY (SELECT * FROM $TABLE WHERE company_code = 'COMPANY_13') TO STDOUT" >> "$OUTPUT_FILE"
|
|
|
|
echo "\\." >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
else
|
|
echo " $TABLE: 데이터 없음 (건너뜀)"
|
|
fi
|
|
done
|
|
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "COMMIT;" >> "$OUTPUT_FILE"
|
|
echo "" >> "$OUTPUT_FILE"
|
|
echo "-- 마이그레이션 완료" >> "$OUTPUT_FILE"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " Export 완료: $OUTPUT_FILE"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "대상 DB에서 실행:"
|
|
echo " psql -h $TARGET_HOST -p $TARGET_PORT -U $TARGET_USER -d $TARGET_DB -f $OUTPUT_FILE"
|
|
}
|
|
|
|
do_import() {
|
|
SQL_FILE=$(ls -t company13_migration_*.sql 2>/dev/null | head -1)
|
|
|
|
if [ -z "$SQL_FILE" ]; then
|
|
echo "마이그레이션 SQL 파일을 찾을 수 없습니다. 먼저 export를 실행하세요."
|
|
exit 1
|
|
fi
|
|
|
|
echo "=========================================="
|
|
echo " COMPANY_13 데이터 Import 시작"
|
|
echo " 파일: $SQL_FILE"
|
|
echo " 대상: $TARGET_HOST:$TARGET_PORT/$TARGET_DB"
|
|
echo "=========================================="
|
|
|
|
psql -h "$TARGET_HOST" -p "$TARGET_PORT" -U "$TARGET_USER" -d "$TARGET_DB" -f "$SQL_FILE"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo " Import 완료"
|
|
echo "=========================================="
|
|
}
|
|
|
|
case "${1:-export}" in
|
|
export)
|
|
do_export
|
|
;;
|
|
import)
|
|
do_import
|
|
;;
|
|
*)
|
|
echo "사용법: $0 {export|import}"
|
|
exit 1
|
|
;;
|
|
esac
|