我正在使用命令将CSV
文件还原到数据库COPY
。csv 文件已压缩。我使用此命令:
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 吗?我该如何禁用它?我重新启动了上面的命令,现在它又正常工作了。我没有更改任何 PostgreSQL 配置。我在 Debian 6 上运行 PostgreSQL 8.4.10。
答案1
一些文档建议您可以使用选项 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 的人……;-)