postgresql Proc SQL到Postgres UFT8数据库:不可打印字符显示为普通问号,无法删除

qybjjes1  于 2023-10-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(138)

我正面临一个问题,需要你的建议:我使用SAS 9.4(桌面版)通过Unicode Postgres ODBC驱动程序连接到Postgres数据库。我使用proc sql语句检索数据并创建sas数据文件。
有一个问题:一个条目在PgAdmin的数据库中具有以下值:“汽车广告”
但是当我查看proc sql创建的SAS数据文件时,它看起来像这样:“车”只是个普通的问号
使用_FIELD = compress(_FIELD, ,'kw');的compress函数似乎不起作用,因为问号只是一个普通的问号,而不是一个不可打印的字符。
Postgres数据库使用UTF8作为服务器编码。ODBC连接使用Unicode Postgres驱动程序。我尝试使用英语(创建Wlatin1数据集)和Unicode选项(创建UTF8数据集)运行SAS,但没有任何变化。
我希望能够删除这个字符。
任何提示或建议将是有益的。
谢谢你,谢谢

f87krz0w

f87krz0w1#

我知道这个问题已经有两年半的历史了,但是你能直接连接到Postgres DB吗?在它进入SAS之前,把非ASCII字符去掉吗?例如,使用this answer来剥离非ASCII字符,您可以执行以下操作:

proc sql;

    CONNECT TO ODBC (dsn=OSBCcon);

    CREATE TABLE work.tableA as 
    SELECT * FROM CONNECTION TO ODBC
    (
        SELECT regexp_replace(_FIELD, '[^[:ascii:]]', '', 'g') AS field_ascii
        FROM my_database.tableA 
        WHERE ID=123 and _FIELD2=AB
    );

    DISCONNECT FROM ODBC;

quit;

相关问题