2011-08-30 58 views
3

我有以下工作流程,我想用短PHP腳本自動化。導入postgresql數據庫轉儲

  1. 從特定URL(可能是FTP)下載gzfile(帶有db轉儲)。
  2. 將文件解碼爲txt。
  3. 用psql(使用cmd)將txt導入本地postgre。

現在我有2個問題:

  • 什麼是傳遞gunzip解壓文件pg_query最好的方法是什麼?
  • 當PHP達到此行時,出現錯誤:
    COPY rf (datum, id_emailu_op, recency, frequency) FROM stdin; 2011-08-29 8484 3 1stdin可以成爲問題嗎?

謝謝大家!

+2

在shell提示符下'gzcat dump.gz | psql'會解壓縮.gz文件並將輸出直接發送到postgres。 –

+0

簡短的Bash腳本可能更簡單,取決於您的需求。 –

+0

我建議使用'pg_dump -Fc'進行轉儲,並使用'pg_restore'進行恢復。 – Kenaniah

回答

2

pg_dump文件是通過psql導入的。你可以加載文件內容,甚至用php解壓縮,然後打開一個管道將數據寫入psql(假設你在unix機器上)。當以這種方式執行psql時,通過您的php腳本編寫的數據通過stdin進入。