在PostgreSQL上使用COPY握手失败

我正在使用COPY命令将CSV文件还原到数据库。 csv文件是bziped的。 我使用这个命令:

 bunzip2 -c -d online-20110923000001.csv.bz2 | psql -U user -h 127.0.0.1 -d testdb -c "COPY data FROM STDIN WITH CSV HEADER;" 

经过一段时间后,停止:

 SSL error: ssl handshake failure connection was lost to database 

日志文件显示:

 2012-03-06 10:01:10 IRST STATEMENT: COPY data FROM STDIN WITH CSV HEADER; 2012-03-06 10:01:10 IRST LOG: SSL error: ssl handshake failure 2012-03-06 10:01:10 IRST CONTEXT: COPY data, line 8349702 2012-03-06 10:01:10 IRST STATEMENT: COPY data FROM STDIN WITH CSV HEADER; 2012-03-06 10:01:10 IRST LOG: could not receive data from client: Connection reset by peer 2012-03-06 10:01:10 IRST CONTEXT: COPY data, line 8349702 

谁能帮忙? psql使用SSL吗? 我怎样才能禁用它? 我重新启动上面的命令,现在它再次正常工作。 我没有改变任何PostgreSQLconfiguration。 我在Debian 6上运行PostgreSQL 8.4.10。

一些文档build议你可以使用sslmode这样的选项来禁用ssl连接。

 $ psql "service=myservice sslmode=disable" 

这也似乎是包括明确传递参数的标准方式,其中有几个谷歌的例子;

 $ bunzip2 -c -d online-20110923000001.csv.bz2 | \ psql "host=127.0.0.1 user=joe password=foo dbname=testdb sslmode=disable" \ -c "COPY data FROM STDIN WITH CSV HEADER;" 

这也是conf文件选项,所以你可以把这些命令放在/etc/postgresql-8.4/pg_service.conf

 [myservice] dbname=testdb user=user host=127.0.0.1 password=password.here 

而且可能会这样工作;

 bunzip2 -c -d online-20110923000001.csv.bz2 | psql "service=myservice sslmode=disable" -c "COPY data FROM STDIN WITH CSV HEADER;" 

但是它拒绝了对我的调用,但它是沿着这些线,我没有一个postgresql服务器在手边,但我可以稍后更新答案,当我上一个工作箱。

手册中的示例页面是;
http://www.postgresql.org/docs/8.4/static/app-psql.html

(嗯,我真的应该把这个问题留给那些每天使用postgresql的人… 😉