AnalyticDB for PostgreSQL は、複数のデータのインポート方法をサポートします。

特殊文字は、データのインポート中にインポートエラーを引き起こすことがよくあります。 ここでは、インポートされたデータ内の特殊文字を事前処理し、それによって発生する問題を排除する方法について説明します。

前述のインポート方法では、MySQL および PostgreSQL からデータをインポートするツールが、自動的に特殊文字をエスケープしてパッケージ化するため、 追加設定なしでツールを直接使用できます。 次の内容では、OSS と COPY コマンドを使用してデータをインポートする方法と、特殊文字の処理方法について説明します。

OSS を使用したデータの並行インポート

データのインポート時には、ファイル内のすべての行がタプルと見なされることが多く、 各列のデータは行ごとに区切り文字で分割されます。 以下 では、区切り記号の使用法と制約、および 各列の特殊文字の処理方法を紹介しています。

区切り記号

OSS 外部テーブルを作成する構文では、次の ように FORMAT 句の後に区切り記号を指定します。

  1. FORMAT 'TEXT' (DELIMITER ',')
  • FORMAT ‘TEXT’ に対する DELIMITER は、 デフォルトでは \t です。
  • FORMAT ‘CSV’ に対する DELIMITER は、 デフォルトでは , です。

外部テーブルを作成する構文での規定に従い、カスタマイズされた区切り記号が 次の制約を満たすという前提であれば、独自の区切記号を定義できます。

  • それらは、ASCII 文字でなければなりません。 漢字や、2 つ以上の ASCII 文字は使用できません。
  • \n および \r はサポートされていません。
  • \n および \r を除くエスケープ文字は、 “E” あるいは “e” を文字の前に追加することでサポートされます。
  • エスケープ文字 \t に “E” をつけないものも サポートされます。
  • TEXT 形式では、DELIMITER を OFF に設定し、単一列の 外部テーブルを使用できます。

データを正しく読み取るには、OSS ファイルでは、指定した区切り文字に厳密に従う必要があります。

データ内の特殊文字

データのインポート中に、特殊文字が使用されるケースには、 次のものがあります。

  • 列に区切り文字と同じ文字が含まれる場合

    • TEXT 形式を使う場合、各 DELIMITER の前に ESCAPE 文字をつけなければなりません。 ESCAPE 文字は、外部テーブルを作成するときに次のコマンドを使用して指定します。 デフォルト値は、バックスラッシュ () です。

      1. FORMAT 'TEXT'(ESCAPE '\')
    • CSV 形式を使用する場合には、 二重引用符 (“) を各 DELIMTER 前に追加する必要があります。

  • 列に漢字が含まれる場合。 OSS 外部テーブルは、 漢字データをサポートします。 ただし、表示が正しいことを確認するには、 作成した外部テーブルを次のようにエンコードする必要があります。

    1. ENCODING UTF8
  • 列に Null データが含まれる場合。 Null 値を文字に一致させるように設定し、 データのインポート中に指定された文字を Null に置き換えます。CSV 形式の場合、デフォルト値は 引用符のない Null 値です。 TEXT 形式の場合、デフォルト値は “\N” です。 The 次のコマンドは、スペースを Null にマップします。 列がスペースの場合、 列の値は OSS ファイルからインポートされたデータの Null になります。

    1. FORMAT 'text' (null ' ' )
  • 列にエスケープ文字が含まれる場合。 エスケープ文字の前に “ESCAPE” を追加することができます。 ESCAPE 値は、外部テーブルの作成時に指定されます。 CSV 形式の場合、デフォルト値は二重引用符(”)です。 TEXT 形式の場合、デフォルト値はバックスラッシュ(\)です。

    • ESCAPE の値を 1 文字にカスタマイズすることができます。 たとえば、次のコマンドは、ESCAPE 値を バックスラッシュに設定します。

      1. FORMAT 'csv'(ESCAPE '\')
    • すべての文字を自動的にエスケープしないように、ESCAPE を OFF に設定することもできます。

  • 列に、単一引用符 (‘) または二重引用符 (“) が含まれる場合。

    • TEXT 形式を用いる場合、単一引用符または二重引用符の前に ESCAPE 文字を追加する必要があります。 デフォルト値はバックスラッシュ () です。

    • CSV 形式の場合、単一引用符か二重引用符の前に ESCAPE 文字を追加する必要があります。 デフォルト値は二重引用符 (") です。 また、列を引用符で囲むには、 列の最初と最後の両方に二重引用符を追加する必要があります。

日付を COPY コマンドを使用してインポート

データをインポートするために、 \COPY 文を用いる場合、 区切り文字は OSS の場合と同じです。 データ内の特殊文字の扱いも 同様です。

COPY 文と CREATE EXTERNAL TABLE 文は使用上わずかな差異があります。 詳細は、「COPY コマンドを用いた データインポート」をご参照ください。

  1. </article>
  2. </main>