2011-08-30 1 views
3

짧은 PHP 스크립트로 자동화하고 싶은 작업 흐름이 있습니다.postgresql 데이터베이스 덤프 가져 오기

  1. 특정 URL (잠재적으로 FTP)에서 gzfile (db 덤프 포함)을 다운로드하십시오.
  2. 파일을 txt로 디코딩합니다.
  3. psql (cmd 사용)을 사용하여 txt를 로컬 postgre로 가져옵니다.

는 지금은이 개 질문이 :

  • pg_query하기 위해 gunzip 한 파일을 전달하는 가장 좋은 방법은 무엇입니까?
  • PHP가 다음 행에 도달하면 오류가 발생합니다.
    COPY rf (datum, id_emailu_op, recency, frequency) FROM stdin; 2011-08-29 8484 3 1. stdin은 문제가 될 수 있습니까?

감사합니다.

+2

쉘 프롬프트에서'gzcat dump.gz | psql' 명령은 .gz 파일의 압축을 풀고 출력을 직접 postgres로 전송합니다. –

+0

짧은 Bash 스크립트는 필요에 따라 아마 더 간단 할 것이다. –

+0

나는'pg_dump -Fc'를 사용하여 덤핑을하고'pg_restore'를 사용하여 복원하는 것이 좋습니다. – Kenaniah

답변

2

pg_dump 파일은 psql을 통해 가져 오기위한 파일입니다. 파일 내용을로드하고, 심지어 php로 압축을 해제 한 다음 psql에 파이프를 열어 해당 프로세스로 데이터를 출력 할 수 있습니다 (유닉스 시스템에 있다고 가정). psql이 이런 식으로 실행되면 PHP 스크립트를 통해 작성한 데이터가 stdin을 통해 전달됩니다.