最主要的是想实现将表中的数据导入导出,如库存表tbl_repos;
windows环境下,pg8.1.13版本,字符集UTF8,因为性能要求,想用psql工具导出到一个文件中备份,需要时再导入。
导入可以用下列语句实现(以下postgre为用户名,tbl_repos为表名,db_storelib为数据库名,d:\6789.txt为生成的文件名及路径,在windows的cmd窗口下执行):
PSql -Upostgres  -c "select * from tbl_repos" db_storelib>d:\6789.txt现在的问题是:
一。 导出的6789.txt文件中,中文变成了乱码,请问如何在命令行中直接设置字符集为UTF8。(在psql命令行提示下输入set pgclientencoding='UTF8',但我想要命令行中直接设置的方法)二。上面的语句中是不需要输入密码,如何在上面的命令中增加密码验证(我想要在服务器端设置为psql连接时必须输入密码以增加安全性)谢谢高手指点。。

解决方案 »

  1.   

    1. psql 没有命令行的选项设字符集,默认是服务器的字符集,如果你要设置字符集,在你的-c command语句里加上set client_encoding=xxx.如:PSql -Upostgres -c "set client_encoding=utf8;select * from tbl_repos" db_storelib>d:\6789.txt2, pg_hba.conf 中的local 行最后一项设为md5
      

  2.   

    可以将你用的sql写成一个sql文件,然后命令行执行。里边开头位置设上字符集即可。
      

  3.   

    又测试了一下,set client_encoding=utf8 后也没有用,但是用pgadmin中的查询界面导出的数据中文又是正确的,java查询的结果也是对的,真不知道错在哪里啊?
      

  4.   

    用OWRD之类的软件打开此文件,有无提示
      

  5.   

    WINDOWS命令行下无法很好的支持UTF8,建议命令行下还是用GBK比较好。
      

  6.   

    你认为的乱码,可能就是UTF8码,在DOS下是无法正确显示的,XP的记事本可以正确显示UTF8.
      

  7.   

    PG的数据库集群默认UTF8编码, 而客户端是简体中文,所以
    set client_encoding=GBK
      

  8.   

    我是生成了文件再用记事本打开的,也是乱码
    查看了一下,PG的服务器端是UTF8,我用的导出语句中也设置了UTF8, 用PGadmin中的查询工具导出的就是正确的,JAVA程序中查询出来到界面上也是正确的。
    如何是好。。
      

  9.   

    我两种字符集都试过了(UTF8,GBK),用psql导出的表中数据是乱码(记事本打开),而且我的服务器端设置的为UTF8,已经输入了很多数据,要将服务器端也改为GBK的话,数据库要重建。
      

  10.   

    建议换其它支持UTF的工具来导出。 WIDNOWS下的DOS对UTF支持有问题。
      

  11.   

    SET CLIENG_ENCODING=GBK也乱吗? 是不是你的PSQL有问题啊?
    导数据一般用pg_dump, 或者你换高版本的psql(服务器不用换,高版本的PSQL可以支持低版本的服务器)
      

  12.   

    用WORD打开此文件,是否有提示
      

  13.   

    psql或者pg_dump导出肯定是UTF8编码, 用记事本是不行的, 需要用其他的Editor比如EM
    或者
    set client_encoding=GBK, 然后用 copy Table to 'Path' csv  就可以导出中文编码的表 
      

  14.   

    关于编码,其实上面已经说得很清楚了, PG的缺省数据库是UTF8, 不修改客户端编码, 导出的文件时UTF8编码的.
    至于密码认证需要修改pg_hba.conf文件, 设置权限