본문 바로가기
실험실/db이행

서버 데이터 psql insert

by 죄니안죄니 2026. 1. 16.
반응형

0️⃣ 전제 조건 정리

이미 한 것 / 해야 할 것부터 분리하자.

✔ 이미 한 것

  • 개발 서버(또는 개발 PC)에 PostgreSQL 설치 완료
  • PostgreSQL 서비스 실행 중
  • data.sql 파일 있음 (Ora2Pg가 만든 COPY 스크립트)

✔ 지금 할 것

  • psql 명령으로 data.sql 실행

1️⃣ psql이 실행 가능한지 먼저 확인

Linux / Docker / 서버라면

psql --version

정상 출력 예:

psql (PostgreSQL) 14.11

❌ 안 나오면:

  • postgresql-client 미설치
  • PATH 안 잡힘

Windows라면

보통 설치 경로:

C:\Program Files\PostgreSQL\14\bin

여기로 이동해서 실행하거나
환경변수 PATH에 추가한다.

cd "C:\Program Files\PostgreSQL\14\bin"
psql --version

2️⃣ 데이터베이스와 사용자 확인

① postgres 유저로 접속 테스트

psql -h localhost -U postgres

비밀번호 입력 → 접속되면 성공


② DB 존재 확인

\l

목록에 mydb가 없으면 생성해야 한다.

CREATE DATABASE mydb;

3️⃣ data.sql 파일 위치 확인 (중요)

예시

/home/dev/migration/data.sql

또는 Windows:

C:\migration\data.sql

👉 psql 실행 위치와 파일 위치를 정확히 알아야 한다


4️⃣ 실제 실행 명령 (핵심)

Linux / 서버 기준

psql -h localhost -U postgres -d mydb -f /home/dev/migration/data.sql

Windows 기준

psql -h localhost -U postgres -d mydb -f C:\migration\data.sql

또는 bin 폴더에서:

"C:\Program Files\PostgreSQL\14\bin\psql.exe" ^
  -h localhost ^
  -U postgres ^
  -d mydb ^
  -f C:\migration\data.sql

5️⃣ 실행 중 나오는 메시지 해석법

✅ 정상일 때

 
SET SET COPY 13

👉 COPY 13 = 13건 정상 이행


❌ 오류 날 때 예시

ERROR: invalid input syntax for type timestamp: "20230708174720"
CONTEXT: COPY ti_lcls_menu, line 1, column ins_dtime

👉 이 경우:

  • 컬럼 타입 불일치
  • VARCHAR로 바꾸거나
  • 사전 변환 필요

6️⃣ 실행 후 반드시 확인해야 할 것

① 데이터 건수

SELECT COUNT(*) FROM ti_lcls_menu;

② 샘플 데이터

SELECT * FROM ti_lcls_menu LIMIT 5;

③ 한글 깨짐 여부

 
SELECT l_menu_nm FROM ti_lcls_menu;

7️⃣ 절대 하면 안 되는 실행 방식 ❌

이건 진짜 중요하다.

  • ❌ pgAdmin Query Tool
  • ❌ DBeaver SQL Editor
  • ❌ JDBC 실행

이유:

  • COPY ... FROM STDIN은 psql 전용

8️⃣ 자주 겪는 실수 TOP 3

❌ data.sql 경로 틀림

→ No such file or directory

❌ DB 이름 틀림

→ database "mydb" does not exist

❌ 권한 문제

→ permission denied for relation


9️⃣ 한 문장 요약

PostgreSQL 데이터 이행용 COPY 스크립트는
반드시 psql CLI에서
-f data.sql 방식으로 실행해야 한다.

반응형

댓글