高级助理秘书长/出入境及;Greenplum的客户端编码(PostgreSQL)

高级助理秘书长/出入境及;Greenplum的客户端编码(PostgreSQL),postgresql,character-encoding,odbc,sas,greenplum,Postgresql,Character Encoding,Odbc,Sas,Greenplum,我试图找到一种方法来指导ODBC驱动程序-Datadirect ODBC在客户端会话中使用win1251 用户指南中提到的方法有: 使用psql中的\encoding命令,可以动态更改客户端编码 使用将客户端编码设置为:=>将客户端编码设置为“值” 使用PGCLIENTENCODING环境变量 在postgresql.conf文件中设置配置参数client_encoding 但据我所知,选项1和3不适合ODBC驱动程序,选项2我也不能使用-因为我使用SAS,这个引擎不允许我执行手动编辑的SQL-

我试图找到一种方法来指导ODBC驱动程序-Datadirect ODBC在客户端会话中使用win1251

用户指南中提到的方法有:

  • 使用psql中的\encoding命令,可以动态更改客户端编码
  • 使用将客户端编码设置为:=>将客户端编码设置为“值”
  • 使用PGCLIENTENCODING环境变量
  • 在postgresql.conf文件中设置配置参数client_encoding
  • 但据我所知,选项1和3不适合ODBC驱动程序,选项2我也不能使用-因为我使用SAS,这个引擎不允许我执行手动编辑的SQL-它使用大量的自动代码生成

    我在postgresql.conf文件中尝试了选项client_编码,而且我已经厌倦了在psql管理会话中执行follow clommand:
    alter user sasuser SET client_encoding to WIN1251但没有任何更改-默认情况下,客户端编码仍然是
    UTF8

    当前在Datadirect ODBC.ini文件中,我有以下字符串:

    IANAAppCodePage=2251
    

    有人能帮帮我吗?

    这肯定能帮上忙:

    ALTER USER sasuser SET client_encoding TO WIN1251;
    
    只有剩下的解释可以是:

    • 实际上,您正在使用其他用户连接到数据库
    • 在连接过程中的某个时刻,客户机编码被显式设置为另一个值
    • 您连接到错误的数据库群集(相同的IP?相同的端口?)
    要查找、设置、重新加载服务器集群,请使用您的用户不友好工具启动一个会话,并检查数据库日志,以及是否与服务器进行了实际通信。 别忘了重置
    log_语句
    ,否则日志文件会变得很大


    或者它只是
    Datadirect ODBC.ini
    中的一个输入错误:

    IANAAppCodePage=2251
    
    应该是1251吧


    没有<代码>IANAAppCodePage MIBenum 2251
    代表“WINDOWS_1251”。不是这样。

    我在日志文件中看到,我的客户机在初始化阶段发送命令
    将客户机编码设置为“UTF8”
    an。。。问题是-如何配置我的客户机(SAS通过ODBC)以不发出此命令…@YuryKochubeev:你检查过输入错误了吗。。事实上,这应该是正确的。2251-->Windows1251。@YuryKochubeev:然后您需要找出此设置的来源。我无法帮助Datadirect ODBC本身。发现问题在于greenplim的SAS/ACCESS中-当我们使用SQL传递然后将编码集设置为win1251时,但当我们使用LIBNAME从相同的用户帐户访问相同的数据源时,以及从SAS编码开关中的相同环境访问UTF8时。出于某种原因,SAS/ACCESS For greenplum向greenplum发送eplicit命令:
    将客户机编码设置为utf8
    ,这是问题的根源。不幸的是,我们没有找到解决方法。。。