データベースターゲットのテーブル名とカラム名
レプリケーションタスクでは、ソースのオブジェクトとフィールドを、それぞれターゲットのデータベーステーブルとカラムにレプリケートします。レプリケーションタスクは、ターゲットのテーブルおよびカラムに、ソースのオブジェクトおよびフィールドと同じ名前を付けないことがあります。
レプリケーションタスクがソースと同じ名前を付けないのは、次のような場合です。
- • レプリケートされたデータをデータベースターゲットに書き出す際に、テーブル名プレフィックスを使用する場合。
テーブル名プレフィックスを付けることで、データベースアカウントを共有している場合に、データベーステーブルが上書きされるのを防ぐことができます。
- • 大文字と小文字を区別するデータをレプリケートする場合。
レプリケーションタスクは、データをターゲットデータベースにレプリケートする際に、すべてのテーブルとカラムの名前を大文字で作成します。ターゲットデータベースが大文字と小文字を区別する場合、データベースにクエリを発行するときに、大文字のテーブルおよびカラム名を使用します。
- • 長いオブジェクト名およびフィールド名を使用したオブジェクトをレプリケートする場合。
ソースのオブジェクト名またはフィールド名の文字数がターゲットの名前の最大許容文字数を超えている場合、レプリケーションタスクは、ターゲットデータベースのテーブル名またはカラム名をトランケートします。
テーブル名のトランケート
ソースオブジェクトをデータベースにレプリケートするとき、レプリケーションタスクは、ソースオブジェクトと同じ名前のデータベーステーブルにデータをレプリケートします。
データをデータベースターゲットにレプリケートするときに、ソースオブジェクト名の長さがターゲットテーブル名で許可されている最大文字数を超える場合、レプリケーションタスクはターゲットデータベースのテーブル名をトランケートします。テーブル名は、最初のX文字にトランケートされます。Xは、ターゲットデータベースのテーブル名で許可されている最大文字数です。
同一レプリケーションタスクのテーブル名の重複
同一のレプリケーションタスクで複数のソースオブジェクトを同じデータベースユーザーアカウントにレプリケートし、トランケートによってテーブル名の重複が生じる場合、レプリケーションタスクは重複するテーブル名の末尾の文字を連番で置き換えます。
例えば、レプリケーションタスクに次のSalesforceソースオブジェクトが含まれているとします。
TenLetters1234567890TenLettersXXX
TenLetters1234567890TenLettersYYY
TenLetters1234567890TenLettersZZZ
これらのオブジェクトをレプリケートする際に、レプリケーションタスクは、ターゲットデータベースに次のようなトランケートされたテーブル名を作成します。
TenLetters1234567890TenLetters
TenLetters1234567890TenLetter1
TenLetters1234567890TenLetter2
異なるレプリケーションタスクでのテーブル名の重複
異なるレプリケーションタスクで同名のソースオブジェクトを同じデータベースユーザーアカウントに複数レプリケートすると、レプリケーションタスクは1つのターゲットテーブルを作成し、ユーザーがオブジェクトの1つをレプリケートするたびにテーブルデータを上書きします。完全なロードを実行すると、テーブル全体が上書きされます。増分ロードを実行すると、変更された行が上書きされます。
テーブルが上書きされないようにするには、各レプリケーションタスクで、異なるターゲットテーブル名プレフィックスを使用します。
カラム名のトランケート
ソースフィールド名の長さが、リレーショナルターゲットのカラム名で許可されている最大文字数を超える場合、レプリケーションタスクは、ターゲットデータベース内のカラム名をトランケートします。カラム名は、最初のX文字にトランケートされます。Xは、ターゲットデータベースのカラム名で許可されている最大文字数です。
例えば、レプリケーションタスクは、Salesforceオブジェクトの次の40文字のフィールド名に基づいて、Oracleデータベースのカラム名を作成します。
TenLetters1234567890TenLettersXXXXXXXXXX
レプリケーションタスクは、最初の30文字にカラム名をトランケートします。
TenLetters1234567890TenLetters
トランケートによってターゲットテーブルのカラム名が重複した場合、レプリケーションタスクは、重複したカラム名の最後の文字を連続番号で置き換えます。また、レプリケーションタスクは、同じタスク内の重複したテーブル名の最後の文字も置き換えます。