PostgreSQL은 COPY 문법이 있어서 SAM 파일만 있다면 쉽게 이관이 가능합니다.
COPY 테이블명 (컬럼1, 컬럼2, ...)
FROM '/절대/경로/파일.csv'
WITH (
FORMAT csv,
DELIMITER ',',
QUOTE '"',
NULL '',
HEADER true,
ENCODING 'UTF8'
);
| 옵션 | 설명 |
| FORMAT csv | CSV 형식 지정 (또는 text) |
| DELIMITER | 구분자 ex) , ; |
| QUOTE | 문자열 감쌀 때 사용하는 기호 |
| NULL | NULL 처리할 문자열 |
| HEADER | 첫줄이 컬럼명이면 true, 바로 데이터면 false |
| ENCODING | UTF8 등 |
* 주의사항
- data.csv 파일의 필드(데이터) 순서와 COPY 대상 테이블에 지정한 컬럼 순서가 정확히 일치해야 합니다.
- postgreSQL 의 서버가 접근이 가능한 파일일 경우 COPY를, 클라이언트 로컬 파일일 경우 \copy를 사용합니다.
저는 백그라운드로 실행해야 했기 때문에, 해당 sql문 파일을 만든 후 실행해 주었습니다.
nohup bin/psql -U user -d database -f import.sql > import.log 2>&1 &
* 번외
해당 SAM 파일이 원하는 형식이 아닐 경우, 명령어를 통해 수정합니다.
// , +32423 -> , 32423 으로 변경
sed -i 's/,+/,/g' data.csv
// 필드 첫번째에서 네번째만 남겨두고 자름
cut -d',' -f1-4 data.csv > data.csv_cut
'Database' 카테고리의 다른 글
| SQL Error [1950] [42000]: ORA-01950: 테이블스페이스 'USERS'에 대한 권한이 없습니다. (0) | 2026.01.26 |
|---|---|
| [Postgresql] 인덱스 테이블스페이스 변경 (1) | 2025.07.02 |
| [PostgreSQL] 쿼리가 느린 이유: Seq Scan과 인덱스 누락 (1) | 2025.06.23 |