PostgreSQL 에서 command line 으로 sql 실행하기
file 에 insert sql 이 들어있는 상태이고, 이녀석을 실행해서 db 에 data 를 넣고 싶은 경우에 어떻게 해야 할까?psql 을 이용하면 된다. windows 에서는 아래 경로에서 찾을 수 있다.
- ..\PostgreSQL\9.4\bin\psql.exe
- /usr/bin/psql
psql -U username -d myDataBase -a -f myInsertFile만약 remote server 에 실행해야 한다면 아래처럼 host 를 지정해 주면 된다.
psql -h 127.0.0.1 -U username -d myDataBase -a -f myInsertFile
encoding
만약 insert file(myInsertfile) 의 encoding 이 console 의 encoding 과 다르지 않은지 확인하자. 기본적으로 client encoding 은 locale setting 을 보고 알아서 setting 한다. 이것을 직접 지정해 주고 싶다면 PGCLIENTENCODING 변수를 이용하면 된다. 자세한 것은 아래 글을 참고하자.- utf 8 - PostgreSQL encoding issue while executing query from command line - Stack Overflow
- 참고로 windows 는 아래처럼 console 의 active code page 를 utf-8 으로 설정을 해줘야 한다. 아래처럼 실행하면 화면에서 깨져보이더라도, 실제로 db 에 insert 값은 제대로 들어가게 된다.
@echo off rem change to UTF-8 console @chcp 65001 set file=%1 set PGCLIENTENCODING=UTF-8 @"d:\Program Files (x86)\PostgreSQL\9.4\bin\psql.exe" -h 133.130.118.56 -U postgres -d beluga -a -f %file%
Error 표시
위의 command line 으로 실행하면 error 도 그냥 화면에 보였다가 사라진다. 그래서 error log 만 모으도록 아래처럼 command 를 만들자. 그러면 error 만 나중에 확인할 수 있다.psql -h 127.0.0.1 -U username -d myDataBase -a -f myInsertFile 2> err.log
pgAdmin III 와의 차이
pgAdmin III 에서는 sql 에 error 가 없는지 확인하고 실행한다. 하지만 이 command line 에서는 바로바로 한줄한줄 실행한다.See Also
- PostgreSQL에서 id sequence reset 하는 방법
- pg_hba.conf 설정 ; 여기서 accept 하는 ip address 설정을 해줘야 한다.
mysql command line
mysql -u root -p dbnamel < c:\inquery.sql
댓글 없음:
댓글 쓰기