2016-07-29 80 views
1

我試圖從一個大小約爲1.6GB的sql文件插入數據。我用命令:Postgres SQL文件插入掛起

\i filename.sql 

但是它已經運行了十多分鐘。最初,當我跑了我輸出,如下圖所示:

psql:xxx.sql:1102: ERROR: role "xxx" does not exist 
psql:xxx.sql:1124: ERROR: relation "xxx" already exists 
psql:xxx.sql:1127: ERROR: role "xxx" does not exist 
psql:xxx.sql:1138: ERROR: relation "xxx" already exists 
psql:xxx.sql:1141: ERROR: role "xxx" does not exist 
psql:xxx.sql:1177: ERROR: relation "xxx" already exists 
psql:xxx.sql:1180: ERROR: role "xxx" does not exist 
psql:xxx.sql:1191: ERROR: relation "xxx" already exists 
psql:xxx.sql:1194: ERROR: role "xxx" does not exist 
psql:xxx.sql:1223: ERROR: relation "xxx" already exists 
psql:xxx.sql:1226: ERROR: role "xxx" does not exist 
psql:xxx.sql:1237: ERROR: relation "xxx" already exists 
psql:xxx.sql:1240: ERROR: role "xxx" does not exist 

這樣繼續下去,直到最後的輸出是:

psql:xxx.sql:1183266: ERROR: duplicate key value violates unique constraint "xxx" 
DETAIL: Key (id)=(2) already exists. 
CONTEXT: COPY mo_logs, line 1: "2 +6421558671  +15759151518 LolWithPlus  unable to deliver, dropping : undefined method `bytesize' for..." 

然後控制檯顯示什麼新從那時起。在我第一次嘗試我認爲這是掛這麼EXITED但得到了以下的輸出:

Cancel request sent 

這使我相信這個腳本仍在運行,但我沒有辦法告訴。任何人都可以建議我如何診斷正在發生的事情,或者告訴我插件是否失效,如懸掛所示。

回答

1

看起來好像SQL腳本包含幾個COPY語句。
其中一個(COPY TO mo_logs)失敗,另一個(COPY TO midn_protections)在您中斷處理時正在運行。

正常情況下,psql在出錯後繼續工作,只會執行下一條語句。爲了避免這種情況,請使用選項--set ON_ERROR_STOP=on來啓動它。

+0

感謝您的意見。當時以爲它仍在運行,但能夠看到除錯誤以外的其他日誌記錄顯示正在取得進展,這將是非常好的。這可能嗎?試圖找到一個命令,但沒有運氣,除了基本日誌被髮送到我選擇的文件。 – EamonnMcElroy

+0

您可以使用'psql'的'-a'選項讓它回顯當前語句。 –

+0

所以那就是'\ i filename.sql -a' – EamonnMcElroy