COPY命令postgres语法错误

时间:2012-11-28 10:19:54

标签: sql postgresql limit dump postgresql-copy

我正在尝试使用

从一个大的postgres 8.1表中导出几行
copy (select * from tablename limit 100) to 'absolute path to file';

但我得到

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

任何想法可能会出错?顺便说一句,我不是数据库中的超级用户,但我相信会产生不同类型的错误。如果您有任何其他想法从SQL转储几行(以一种格式轻松插入,无需编码),除了使用副本,我会打开建议。

2 个答案:

答案 0 :(得分:3)

要克服版本8.1的缺点,您可以创建TEMPORARY TABLE并在COPY 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

答案 1 :(得分:0)

在postgresql 8.1中,您COPY无法SELECT。它是在8.2

中添加的

查看此处的差异http://www.postgresql.org/docs/8.1/static/sql-copy.html和此处http://www.postgresql.org/docs/8.2/static/sql-copy.html