2012-11-28 70 views
2

我試圖從一個大的Postgres 8.1導出表使用COPY命令Postgres的語法錯誤

copy (select * from tablename limit 100) to 'absolute path to file'; 

,但我得到

ERROR: syntax error at or near "(" at character 6. 

任何想法可能是想錯了幾行?順便說一下,我不是數據庫中的超級用戶,但我相信會產生一種不同類型的錯誤。如果您有任何其他想法從SQL中轉儲幾行(以便於插入的格式,而不需要編碼),除了使用副本之外,我可以打開一些建議。

+0

請複製並粘貼您正在使用的確切命令,包括實際的表名和文件名。 – Flimzy

+0

您知道8.1已被棄用和取消支持很長時間嗎? –

回答

3

爲了克服的8.1版本的缺點,你可以創建一個TEMPORARY TABLECOPY TO使用它:

CREATE TEMP TABLE t_tmp AS 
SELECT * FROM tablename LIMIT 100; 

COPY t_tmp TO '/absolute/path/to/file'; 

溫度。表會在會話結束時自動刪除。如果你想保持連接打開,你可以顯式刪除表或在其中您回滾事務包住它(這是什麼已經寫入文件永遠不會回滾。)

BEGIN; 
CREATE ...; 
COPY ...; 
ROLLBACK; 

或者升級到更最近的版本,這將是一個非常好的主意。
PostgreSQL 8.1 has reached end of life in Nov. 2010

+0

謝謝,工作得很好。至於我知道的新版本,但作爲開發人員,我被告知要繼續使用它。 – user1845360

+0

@ user1845360:你有我的同情心。 ;) –