2012-04-09 73 views
1

我有一大堆包含超過300000個PostgreSQL中的插入命令。我甚至無法將其加載到pgAdmin(它崩潰)。所以我使用命令行和\ i來執行該文件。 我想查看錯誤消息(如果有的話)。我如何通過命令行將消息保存到日誌文件中? 感謝您的幫助 謝謝如何將sql命令結果保存到文件(postgresql)

編輯 我已經看到了一些other posts卻忍不住。

+0

300000插入命令?從文件中讀取數據不是更容易嗎? – wildplasser 2012-04-09 09:39:30

+0

@wildplasser :)我剛剛將XML文件轉換爲插入命令來填充數據庫。這就是僱主所要求的:數據庫! 「從文件中讀取數據」?你是否建議另一個解決方案來完成它?請幫忙。謝謝 – rahman 2012-04-09 09:43:03

+1

如果XML只包含一個(或幾個)矩形數據表,它可以轉換成.csv(或.tsv)文件相對容易。 (比轉換成插入語句更容易,恕我直言) – wildplasser 2012-04-09 09:46:06

回答

2

從unix-prompt:(windows可能有類似的機制)。

psql -U my_username my_databasename <the_script.sql>the_output.log 

UPDATE:上述命令假定執行它能夠讀取「the_script.sql」並且用戶可以寫入用戶「the_output.log」(在這種情況下,在當前目錄)。如果你不能寫有某種原因,你總是可以寫到/ tmp,如psql -U my_username my_databasename <the_script.sql>/tmp/other_output.log

+0

我用我自己的帳戶(vahid)登錄並且數據庫所有者是postgres。所以命令如下所示:vahid @ vahid -ThinkPad-T420:〜/ workspace/MATSIM $ psql -U postgres MATEST ./res.txt psql:FATAL:用戶「postgres」的對等身份驗證失敗 – rahman 2012-04-09 09:55:59

+0

做一個sudo沒有改變任何東西 – rahman 2012-04-09 09:56:45

+0

將輸出文件所有者(和中間目錄)更改爲postgres也會產生另一個問題:$ psql -U postgres MATEST /sqlresult/res.txt bash:/ sqlresult/res .txt:權限被拒絕任何想法?謝謝 – rahman 2012-04-09 09:58:47

0
psql -e -f file_name db_name 2>&1 > log.txt 

最有趣的日誌,你會發現發送到在psql標準錯誤,所以 重定向錯誤輸出到標準輸出和然後把它們放在一個log.txt文件中應該可以工作。

相關問題