PostgreSQLでサポートされていないLC_COLLATEおよびLC_TYPEをサポートするようにWindowsを強制する方法は?


8

PostgreSQL 9.1.xの新規インストールがあります。残念ながら、私はOSがLC_COLLATE = 'pl_PL.utf8'およびをサポートしていないことを発見しましたLC_CTYPE = 'pl_PL.utf8'。私はPostgreSQLのドキュメントを読みました:

すべてのプラットフォームで、default、C、およびPOSIXという名前の照合が使用可能です。オペレーティングシステムのサポートによっては、追加の照合が使用できる場合があります。

しかし、Windowsにそのロケールをサポートさせる方法はありますか?私はパッチ、プラグインまたは何かを意味します。

回答:


7

Windowsでは、必要なロケールがすでにインストールされている可能性が高く、Unix とは異なる名前が付けられています。

例として、次のデータベースの作成は、Windows XPのPG9.1で、デフォルトのロケールFrench_France.1252と、思い出せない追加の言語パックがインストールされていない状態で、私には問題なく動作するようです。

CREATE DATABASE pldb
       ENCODING = 'UTF8'
       LC_COLLATE = 'Polish'
       LC_CTYPE = 'Polish'
       TEMPLATE=template0;

また、この新しく作成されたデータベースでこのクエリをUTF8で送信することにより、並べ替え順序の簡単なテストも行います。

select * from (values ('z'), ('ź'), ('ż'), ('s'), ('ś'), ('x'), ('y')) as letters order by 1;

正しい結果を出力するようです:

S
、S
、X
、Y
、Z
、Z
、Z


うーん...多分あなたは正しいです...
marioosh 2012

1

私が知る限りでは、PostgreSQLのWindowsバージョンがWindowsで提供されていないロケールと照合をサポートするように強制することはできません。PostgreSQLはシステムロケールと照合サポートを使用します。システムがサポートしていない場合は、使用できません。これは時々イライラする制限ですが、それはどのようにです。Windowsインストールでサポートされている適切なエンコードと照合を選択する必要があります。

OS照合名にエイリアスを付けて呼び出すpl_PL.utf8場合は、でそれを実行できる場合がありますCREATE COLLATION

文字セットのサポート照合順序のサポート、およびpg_collat​​ionカタログテーブルを参照してください。

これで解決しようとしている問題は何ですか?


「いいえ」Windowsではこれをサポートする方法がないということですか?多分私はそれを動作させるために何かをインストールすることができます。私はそれが必要ですLC_COLLATE、有効なソートにLC_CTYPE設定され'pl_PL.utf8'ています。

@marioosh必要な照合規則を備えた同等のWindowsロケールを見つける必要があります。私の見解では、これは少しいぼです。OSのサポートに常に依存する必要があるのではなく、Pgが少なくともオプションの内部照合/エンコーディングサポートを提供することを本当に望みます。回答がドキュメントリンクで更新されました。
クレイグリンガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.