2012-04-01 38 views
23

ようなデータベースを作成します?:UTF8 PostgreSQLは、PostgreSQLで同等であるもの、データベースステートメントを作成するには、次のMySQLの場合(文字セット、エンコーディング、およびLC_TYPEを含む)のMySQL

CREATE DATABASE IF NOT EXISTS `scratch` 
    DEFAULT CHARACTER SET = utf8 
    DEFAULT COLLATE = utf8_unicode_ci; 

を私は現在持っている:

CREATE DATABASE "scratch" 
    WITH OWNER "postgres" 
    ENCODING 'UTF8' 
    TABLESPACE "pg_default"; 

LOCALEも同様ですか、具体的にする必要がありますか?

答えて

38

はい、具体的にすることができます。例えば

CREATE DATABASE "scratch" 
    WITH OWNER "postgres" 
    ENCODING 'UTF8' 
    LC_COLLATE = 'en_US.UTF-8' 
    LC_CTYPE = 'en_US.UTF-8'; 

はまた、私はPostgreSQLのロケールと照合順序については以下のページを読むことをお勧めします。

+0

おかげでマイケル。私が同じように思いついたとき、これは確かなものでした。しかし、私はこのような例は見当たりません_どこにでもありますが、私は常に100%明示的になることを好みます。私はこの質問をする前に文書を覗き込んだ。しかし、私はまだあなたが私に与えた構文を正確に思いついたが、私は何かを逃していないと確信しなかった。それは私には、事例を提供する上で少しうまくいくかもしれないという事実をほのめかす傾向があります。 –

+1

これは私にとってはうまくいきましたが、動作させるために以下の制約を追加する必要がありました: 'TEMPLATE = template0' – Lucas

+2

pgの照合は非常に混乱します。 mysqlでは、utf8mb4_unicode_ciが標準であり、すべての言語が1つの照合に含まれています。これはRFCまたはISOで定義された動作ではありませんが、動作します! unicode/utf8の全ポイントは、すべての言語をシームレスにサポートすることです*。 utf8を指定して、en_USのような単一の照合順序に従ってソートすることは、混乱させるだけでなく、役に立たない。要件は、英語、中国語、日本語などを定義した順序で同じページに表示することです。私は、すべてのクライアントが単一の主要言語で作業していると仮定することはできません。マルチ言語をサポートするにはどうすればよいでしょうか? –

関連する問題