PowerReplicationは、DBMS間で異なるデータ型を変換して同期処理を行います。ここでは、異なるDBMS間でデータ型を変換する仕組みを説明します。
データ型変換
PowerReplicationは、異なるDBMS間で項目の値を維持して反映するためデータ型をODBCのSQLデータ型に変換して同期処理を行います。
Oracleを使用する場合
Oracleのデータ型は、以下のODBCのSQLデータ型に変換されます。
Oracleのデータ型 | 変換するODBCのSQLデータ型 |
---|---|
NUMBER(p,q) | SQL_NUMERICまたはSQL_INTEGER※1 |
CHAR | SQL_CHARまたはSQL_WCHAR※2 |
DATE | SQL_TIMESTAMP |
※1)OracleのNUMBER型がp=38、q=0の場合、ODBCのSQLデータ型はSQL_INTEGERに変換
※2)ASPレプリケーションサービスの動作環境(動作文字コード)に依存
ASP V24以前のシステムと連携する場合、または、ASP V25以降のシステムで動作文字コードにシフトJISを設定したシステムと連携する場合、SQL_CHARに変換。ASP V25以降のシステムで動作文字コードにUnicodeを設定したシステムと連携する場合、SQL_WCHARに変換。
SQL Serverを使用する場合
SQL Serverのデータ型は、以下のODBCのSQLデータ型に変換されます。
SQL Serverのデータ型 | 変換するODBCのSQLデータ型 |
---|---|
numeric | SQL_NUMERIC |
decimal | SQL_DECIMAL |
int | SQL_INTEGER |
smallint | SQL_SMALLINT |
real | SQL_REAL |
float | SQL_FLOAT |
char | SQL_CHAR |
nchar | SQL_CHARまたはSQL_WCHAR※ |
datetime | SQL__TIMESTAMP |
※)ASPレプリケーションサービスの動作環境(動作文字コード)に依存
ASP V24以前のシステムと連携する場合、または、ASP V25以降のシステムで動作文字コードにシフトJISを設定したシステムと連携する場合、SQL_CHARに変換。ASP V25以降のシステムで動作文字コードにUnicodeを設定したシステムと連携する場合、SQL_WCHARに変換。
ODBCのSQLデータ型の詳細は、「Microsoft ODBC プログラマーズリファレンス」を参照してください。
DBMS間のデータ型の対応づけは、"付録D データ型対応づけの仕組み"を参照してください。
相手サーバから転送されたデータに、反映先のデータベースに変換できないデータ(不正データ)が含まれる場合、不正データは補正して反映されます。
日本語文字のデータ補正
変換できない文字コードが検出された場合は、‘_’(アンダーバー)に置き換えて同期が続行されます。
数値データ(NUMERIC,DECIMAL)のデータ補正
Symfoware6000と連携する場合、数値項目(NUMERIC、DECIMAL)に不正コードが含まれていると、不正データはSymfoware6000の機能によって数値データが置き換えられます。
不正データを補正できず、エラーとなった場合、エラーとなったデータの主キーの値が詳細メッセージ情報ファイルに出力されます。
詳細メッセージ情報ファイルの内容は、"付録F 詳細メッセージ情報ファイルの出力形式"を参照してください。
主キーの値に不正データが含まれていると値が補正され、重複データとなる場合があります。
この場合、反映元のデータファイルを修正して、一括同期を実行することが必要です。
文字列データの後ろに詰められた空白(後方空白)は、対象となる項目のデータ型が固定長と可変長で異なります。
固定長の場合
データを評価※するとき、半角の後方空白は削除して評価されます。全角の後方空白は削除せずに評価されます。
データファイルへの反映では、項目の長さに合わせて半角の後方空白が詰められます。このとき、反映するデータに全角の後方空白が含まれていると、半角空白に置き換えられます。
可変長の場合
データを評価※するとき、利用者プログラムなどで明に書き込んだ後方空白を含めて評価されます。
データファイルへの反映では、後方空白は削除されます。
Symfoware6000と連携する場合、対象となる項目のデータ型がCHARACTER型とNATIONAL CHARACTER型で異なります。
CHARACTER型の場合
データを評価※するとき、半角の後方空白は削除して評価されます。全角の後方空白は削除せずに評価されます。
データファイルへの反映では、項目の長さに合わせて半角の後方空白が詰められます。このとき、反映するデータに全角の後方空白が含まれていると、全角空白のまま反映されます。
NATIONAL CHARACTER型の場合
データを評価※するとき、全角の後方空白は削除して評価されます。
データファイルへの反映では、項目の長さに合わせて全角の後方空白が詰められます。このとき、反映するデータに半角の後方空白が含まれていると、全角空白に置き換えられます。
※)主キー、抽出条件、競合発生を評価することを示します。
上記のように使用するDBMSによって全角の後方空白に対する扱い方が異なるため、全角の後方空白により競合が発生する場合があります。
後方空白による競合の発生を防止するため、同じデータ型を関連づけてください。また、利用者プログラムでは、全角の後方空白を入力しないでください。
反映元(Symfoware6000)のデータファイルに全角空白だけの文字列データを入力して同期を実行すると、反映先(OracleまたはSQL Server)では全角空白1文字と半角空白になります。この場合、競合が発生します。競合の発生を防止するため、全角空白だけの文字データを入力しないでください。