Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
POSTGRESQL客户端编码与服务器端编码_Postgresql_Performance_Encoding_Character Encoding - Fatal编程技术网

POSTGRESQL客户端编码与服务器端编码

POSTGRESQL客户端编码与服务器端编码,postgresql,performance,encoding,character-encoding,Postgresql,Performance,Encoding,Character Encoding,我正在使用postgresql 9.6。我将oracle系统从oracle迁移到postgresql。保存在数据库中的数据以希伯来语保存。因此,为了查看它,我需要将字符集从默认更改为ISO_8859_8。现在我可以删除数据库并创建一个具有不同编码的新数据库,还可以在客户端(psql)上设置不同的编码。我想了解从性能的角度看什么更好 谢谢,Mariel。如果在客户端只使用拉丁语8,那么对数据库使用相同的编码可能是最有效的,因为不需要转换 如果您还需要存储其他字符,请使用UTF-8。如果应用程序使用

我正在使用postgresql 9.6。我将oracle系统从oracle迁移到postgresql。保存在数据库中的数据以希伯来语保存。因此,为了查看它,我需要将字符集从默认更改为ISO_8859_8。现在我可以删除数据库并创建一个具有不同编码的新数据库,还可以在客户端(psql)上设置不同的编码。我想了解从性能的角度看什么更好


谢谢,Mariel。

如果在客户端只使用拉丁语8,那么对数据库使用相同的编码可能是最有效的,因为不需要转换


如果您还需要存储其他字符,请使用UTF-8。

如果应用程序使用或支持UTF-8,请在数据库中使用UTF-8。这通常是默认的,所以如果数据库已经是UTF-8,那么就考虑这样做。

如果应用程序仅支持ISO-8859-8,您可能希望将DB限制为ISO-8859-8,以防止应用程序以外的其他东西插入数据,从而阻止应用程序读取数据。但这是不使用utf-8的唯一原因

效率不是一个真正的问题,它只是在实践中没有太大的区别。utf-8上的排序可能会稍微慢一点,但即使这样,也不会太多


这里要做的主要事情是使用
COLLATE“C
索引、运算符等,当您不关心词法排序而只需要字节值排序时。无论DB是ISO-8859-8、UTF-8还是其他类型,这都很有用。

Ahm,我想在做任何更改之前先确认一下。我有一个oracle数据库,NLS_字符集设置为IW8ISO8859P8。我将oracle数据库中的数据带到postgresql中。之后,我根据这些数据创建excel文件。因此,我认为需要将客户机/服务器的字符集更改为ISO_8859_8。那么,我应该改变两边的编码?还是继续使用utf8?(我不确定它是否支持希伯来语…)您可以对PostgreSQL数据库使用wither编码,而对于客户端,您必须使用应用程序(Excel)期望的编码。我将psql编码设置为ISO_8859_8,但文本看起来像gebbrish。应用程序通过psql连接到数据库。当我使用pgAdmin时,我看到希伯来文字符,但使用psql时,我看到的只是胡言乱语。应用程序通过psql连接?不是ODBC、nPGSQL、PgJDBC等数据库驱动程序?但是实际的
psql
命令行客户端?应用程序与数据库通信的方式是多么奇怪和可怕:(应用程序通过服务器上的psql进行连接(它运行一些过程来分析数据并创建excels…)所以我可以在两边设置编码,哪一边更好?db是sql\u asci default..有人这样认为。如果它只是调用
psql
,那么我会在db中使用utf-8,并将
client\u encoding
设置为
ISO-88590-8
,预计以后可能需要更广泛的编码。但是j没有错如果您确定不需要在该空间外存储文本,则必须创建DB
ISO-8859-8
。不要使用
SQL\u ASCII
。您肯定需要修复该问题,这将需要转储和重新加载。我犯了错误。我再次检查,我的DB编码设置为utf8,collate-en\u us.UTF-8,Ctype=en\u us.utf8。因此,在这种情况下,我应该只需将客户机_编码设置为ISO-88590-8?它对数据库性能有任何影响吗?如果进行大量文本传输,可能会产生较小的CPU成本,但通常可以忽略不计。这是我的建议。我尝试将客户机_encoding设置为ISO-88590-8,但出现错误psql:致命:参数“客户机_编码”的值无效:“ISO-88590-8”