티스토리 뷰
많은 Batch 애플리케이션이 JDBC를 통한 SQL Insert 문을 통해서 처리하는 경우가 있다. 하지만 대부분 RDBMS는 파일을 읽어서 테이블에 직접 적재해주는 방법을 제공해준다. Postgresql 에서 대용량 데이터를 파일을 통해 Insert하는 방법을 알아보겠다.
database 접속 및 table 생성
DB 생성 및 사용자 생성 과정은 생략, 테이블 생성
$psql -U test_user -d test_db
psql (11.4, server 11.1)
Type "help" for help.
test_db=> create table sample(name varchar(100), age integer, sex varchar(1));
CREATE TABLE
sample data 파일 생성
, 구분자로 이름, 나이, 성별 데이터를 저장하고 있는 파일을 생성한다.
$touch data.txt
$vi ./touch
김말순,10,F
최종화,32,M
김구라,24,M
이종수,39,M
권아나,33,F
한혜진,29,F
노정렬,45,M
기러기,10,F
올리버,23,M
빨모샘,43,M
Postgres 계정으로 접속
postgres 계정으로 접근후 \list DB 리스트 확인 \c test_db 로 database swtich
$psql -U postgres
psql (11.4, server 11.1)
Type "help" for help.
postgres=# \list
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+------------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
test_db | postgres | UTF8 | C | C | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | test_user=CTc/postgres
(4 rows)
psotgres=#\c test_db
psql (11.4, server 11.1)
You are now connected to database "test_db" as user "postgres".
test_db=#
Copy 명령어
간단하게 10건의 테스트 데이터를 입력했다. 시간을 측정해보지 않았지만 2억건 이상의 데이터를 입력했을때도 일반적인 애플리케이션을 통한 배치 시간보다 적게 걸린것 같다. (10분 이내)
test_db=# copy sample(name, age, sex) from '/home/test/data.txt' with delimiter ',';
COPY 10
test_db=# select * from sample;
name | age | sex
--------+-----+-----
김말순 | 10 | F
최종화 | 32 | M
김구라 | 24 | M
이종수 | 39 | M
권아나 | 33 | F
한혜진 | 29 | F
노정렬 | 45 | M
기러기 | 10 | F
올리버 | 23 | M
빨모샘 | 43 | M
(10 rows)
test_db=#
More
copy 명령어의 더 많은 정보는 아래의 링크에 나와있다.
https://www.postgresql.org/docs/10/sql-copy.html
'Web Development' 카테고리의 다른 글
Redis Install on Ubuntu 16.x And File into Redis (0) | 2019.11.15 |
---|---|
정규식 퀴즈 사이트 https://regexone.com/ (0) | 2019.11.14 |
MAC OS에서 파일명 확장자 일괄변경 (0) | 2019.11.04 |
python pip install 중 error => locale.Error: unsupported locale setting) (0) | 2019.10.23 |
Docker 명령어 정리(feat pgadmin4 ) (0) | 2019.10.15 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크