PostgreSQL では、他のデータベース システム (MSSQL Server 2008 など) からテーブルをインポートするときに、大文字と小文字の区別の処理により混乱が生じる可能性があります。 PostgreSQL でテーブルと列を作成する場合、引用符で囲まれていない名前は大文字と小文字が区別されませんが、引用符で囲まれた名前は大文字と小文字が区別されます。
ただし、MSSQL Server からテーブルをインポートする場合、インポート ツールはテーブル名と列名をすべて大文字で作成するため、名前の大文字と小文字が区別される場合があります。 Postgres のデフォルトの大文字と小文字を区別しない機能では大文字の名前が認識されないため、これらのテーブルにアクセスしようとするとエラーが発生する可能性があります。
たとえば、次のクエリを使用して「STD_TYPE_CODES」という名前のテーブルにデータ ビューを作成しようとすると、
<code class="language-sql">select * from STD_TYPE_CODES</code>
関係「std_type_codes」が存在しないことを示すエラーが表示される場合があります。これは、Postgres が引用符で囲まれていないテーブル名を自動的に小文字に変換し、予想される "STD_TYPE_CODES" とインポート プロセス中に作成される実際の "std_type_codes" テーブル名の間に不一致が発生するためです。
この問題を解決するには、次の 2 つの方法を選択できます:
<code class="language-sql">select * from "STD_TYPE_CODES"</code>
<code class="language-sql">ALTER TABLE "FOO" RENAME TO "foo"</code>
テーブル名を小文字に変換すると、Postgres のデフォルトの大文字と小文字を区別しない動作との互換性が確保されます。あるいは、MSSQL のダンプ ファイルを変更して、大文字の引用符で囲まれた名前をすべて小文字の引用符で囲んだ名前に置き換えることで、Postgres と互換性を持たせることができます。
今後同様の問題を回避するには、PostgreSQL でテーブルやその他のオブジェクトを作成するときに、引用符で囲まれていない名前または小文字の引用符で囲まれた名前を使用することをお勧めします。これにより、名前の大文字と小文字の区別がデータのアクセシビリティに影響を与えなくなります。
以上がPostgreSQL でインポートされたテーブルの大文字と小文字の区別の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。