2017-12-06 35 views
0

디렉토리로 이동하고 코드 페이지를 변경하고 (내 폴더에 자국어로 된 문자가 포함되어 있음) psql에서 데이터베이스를 연 다음 \ copy를 사용하여 DB의 일부 테이블을 내 폴더로 내 보냅니다. 컴퓨터를 종료 한 다음 데이터베이스를 종료하고 명령을 닫으십시오. 수동으로 처리하면 매력처럼 작동하지만 데이터베이스에 들어가면 .bat 파일이 중지됩니다.배치 파일에서 URI를 통해 데이터베이스에 연결 한 후 psql에서 copy를 사용하는 방법은 무엇입니까?

cd C:\Program Files\PostgreSQL\9.6\bin 
    chcp 1250 
    psql "postgres://<heres_my_URI>" 
    \copy <table_name> to 'G:\<path>\name.csv' with 
DELIMITER ',' header csv; 
    \copy <table_name> to 'G:\<path>\name.csv' with 
DELIMITER ',' header csv; 
    \q 
    exit 

.bat 파일을 CSV 파일을 경로로 다운로드하고 그 뒤에 닫고 싶습니다.

<mydatabase_name> => 

을 내가 수동으로

\copy <table_name> to 'G:\<path>\name.csv' with 
    DELIMITER ',' header csv; 

\q 또는

를 누를 때까지 아무 일도 일어나지 않습니다 :

하지만 데이터베이스에 입력 할 때까지 잘 .BAT하고있다, 그럼 그냥 보여줍니다. DB를 종료 한 후, \ copy가 인식 할 수없는 모든 오류를 표시합니다. 어떻게 작동하게합니까? 도움을 주셔서 감사합니다 :)

답변

0

당신은 가 아닌, 별도의 파일에 psql 프로그램에 의해 실행하는 주요 .bat 파일을 모든 문을 둘 필요 각각의 \copy 명령은 반드시 한 줄로 입력해야합니다. 그것은 세미콜론으로 끝날 필요는 없습니다.

+0

여전히 다른 여분의 인수로 script.sql을 무시하고 데이터베이스로 진행합니다 ... 무엇이 잘못되었는지 이해할 수 없습니다 ... script.sql은 .bat 파일과 같은 폴더에 있어야합니까? 그럼에도 불구하고 묻습니다. – ThorOdinson

+0

@ThorOdinson : URI에 의해 -f 인수가 사용되었다고 생각한다면'psql -f script.sql ... 다른 인수' –

+0

예! 마침내 효과가있었습니다! 정말 고맙습니다! (방금 script.sql 파일의 경로를 추가하고 인수의 순서를 바꿨습니다.) – ThorOdinson

-1

psql "postgres : //"-c "DELIMITER ','header csv; copy : 'G : \\ name.csv'에 복사 할 수 있습니다. 'G : \\ name.csv'with DELIMITER ','header csv; '

.bat 파일 :

chcp 1250 
psql "postgres://<heres_my_URI>" -f script.sql 
exit 

script.sql :

\copy <table_name> to 'G:\<path>\name.csv' with DELIMITER ',' header csv 
\copy <table_name> to 'G:\<path>\name.csv' with DELIMITER ',' header csv 

+0

여전히 cmd는 과도한 인수 ("postgres : //"를 따르는 모든 것)이며 무시되었다고합니다. 데이터베이스로 이동하고 => 을 다시 표시합니다. – ThorOdinson