すべてのプロダクト
Search
ドキュメントセンター

DataWorks:SAP HANA

最終更新日:Mar 01, 2026

SAP HANA データソースを使用すると、SAP HANA からのデータの読み取りと SAP HANA へのデータの書き込みが可能になります。このトピックでは、DataWorks における SAP HANA のデータ同期機能について説明します。

サポートされるバージョン

SAP HANA の以下のバージョンがサポートされています。

  • DataBase 2.00.048.06.1623425628

  • DataBase 2.00.055.00.161

制限事項

サポートされるフィールドタイプ

次の表に、SAP HANA Reader が変換できるデータの型を示します。

型カテゴリ

データソースのデータの型

整数

INT、TINYINT、SMALLINT、MEDIUMINT、BIGINT

浮動小数点

FLOAT、DOUBLE、DECIMAL

文字列

VARCHAR、CHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT

日付と時刻

DATE、DATETIME、TIMESTAMP、TIME、YEAR

ブール値

BIT、BOOL

バイナリ

TINYBLOB、MEDIUMBLOB、BLOB、LONGBLOB、VARBINARY

重要
  • 表に記載されていないデータの型はサポートされていません。

  • SAP HANA Reader プラグインは、tinyint(1) を整数として扱います。

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解できます

データ同期タスクの開発

同期タスクの設定のエントリポイントと手順については、以下の設定ガイドをご参照ください。

単一テーブルのオフライン同期タスクの設定

付録:スクリプトデモとパラメーターの説明

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマット要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでのタスク設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。

Reader スクリプトデモ

  • 単一データベース内の単一テーブルの設定

    {
        "type":"job",
        "version":"2.0",// バージョン番号。
        "steps":[
            {
                "stepType":"saphana",// プラグイン名。
                "parameter":{
                    "column":[// カラム名。
                        "id"
                    ],
                    "connection":[
                        {   "querySql":["select a,b from join1 c join join2 d on c.id = d.id;"], // querySql 文を接続内の文字列として記述します。
                            "datasource":"",// データソース。
                            "table":[// テーブル名。テーブルが 1 つしかない場合でも、テーブル名は配列形式 [] で記述する必要があります。
                                "xxx"
                            ]
                        }
                    ],
                    "where":"",// フィルター条件。
                    "splitPk":"",// 分割キー。
                    "encoding":"UTF-8"// エンコード形式。
                },
                "name":"Reader",
                "category":"reader"
            },
            {
                "stepType":"stream",
                "parameter":{},
                "name":"Writer",
                "category":"writer"
            }
        ],
        "setting":{
            "errorLimit":{
                "record":"0"// エラーレコード数。
            },
            "speed":{
                "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。
                "concurrent":1, // 同時実行ジョブ数。
                "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
            }
        },
        "order":{
            "hops":[
                {
                    "from":"Reader",
                    "to":"Writer"
                }
            ]
        }
    }
  • シャードテーブルの設定

    説明

    シャーディングにより、SAP HANA Reader を使用して複数の SAP HANA テーブルからデータを読み取ることができます。これらのテーブルのスキーマは同じである必要があります。

    {
        "type": "job",
        "version": "1.0",
        "configuration": {
            "reader": {
                "plugin": "saphana",
                "parameter": {
                    "connection": [
                        {
                            "table": [
                                "tbl1",
                                "tbl2",
                                "tbl3"
                            ],
                            "datasource": "datasourceName1"
                        },
                        {
                            "table": [
                                "tbl4",
                                "tbl5",
                                "tbl6"
                            ],
                            "datasource": "datasourceName2"
                        }
                    ],
                    "singleOrMulti": "multi",
                    "splitPk": "db_id",
                    "column": [
                        "id", "name", "age"
                    ],
                    "where": "1 < id and id < 100"
                }
            },
            "writer": {            
            }
        }
    }

Reader スクリプトのパラメーター

パラメーター

説明

username

ユーザー名。

password

パスワード。

column

同期するフィールドの名前。すべてのカラムを同期するには、アスタリスク (*) を使用します。

説明

SAP HANA Reader のフィールド名にスラッシュ (/) が含まれている場合は、フィールド名を二重引用符で囲み、バックスラッシュ (\) で引用符をエスケープする必要があります。たとえば、フィールド名が /abc/efg の場合、値を \"/abc/efg\" に設定します。

table

同期するテーブルの名前。

jdbcUrl

HANA データベースへの接続に使用される Java Database Connectivity (JDBC) URL。例:jdbc:sap://127.0.0.1:30215?currentschema=TEST

splitPk

データ同期の分割キーとして使用される HANA テーブルのフィールド。分割キーは、HANA テーブルを同時に同期するのに役立ちます。

分割キーは、数値の整数フィールドである必要があります。そのようなフィールドが存在しない場合は、このパラメーターを空のままにすることができます。

Writer スクリプトデモ

以下のコードは、スクリプト設定の例です。

{
    "type":"job",
    "version":"2.0",// バージョン番号。
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"saphana",// プラグイン名。
            "parameter":{
                "postSql":[],// データがインポートされた後に実行する SQL 文。
                "datasource":"",// データソース。
                "column":[// カラム名。
                    "id",
                    "value"
                ],
                "batchSize":1024,// 1 つのバッチでコミットするレコード数。
                "table":"",// テーブル名。
                "preSql":[
                     "delete from XXX;" // データがインポートされる前に実行する SQL 文。
                   ]
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{// エラーレコード数。
            "record":"0"
        },
        "speed":{
            "throttle":true,// throttle を false に設定すると、mbps パラメーターは有効にならず、レート制限は適用されません。throttle を true に設定すると、レート制限が適用されます。
            "concurrent":1, // 同時実行ジョブ数。
            "mbps":"12"// レート制限。1 mbps は 1 MB/s に相当します。
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソースの名前。値は、コードエディタで追加したデータソース名と同じである必要があります。

はい

なし

table

同期するテーブルの名前。

はい

なし

column

データを書き込む宛先テーブルのフィールド。フィールドはカンマ (,) で区切ります。例:"column": ["id", "name", "age"]

すべてのカラムに順番にデータを書き込むには、アスタリスク (*) を使用します。例:"column":["*"]

説明

ソースフィールド名にスラッシュ (/) が含まれている場合は、名前を二重引用符で囲み、バックスラッシュ (\) でエスケープします。たとえば、フィールド名が /abc/efg の場合は、\"/abc/efg\" を指定します。

はい

なし

preSql

データ同期タスクが開始される前に実行される SQL 文。コードレス UI では、1 つの SQL 文しか実行できません。コードエディタでは、複数の SQL 文を実行できます。たとえば、同期前にテーブルから古いデータをクリアするために、次の文を実行できます:

truncate table tablename
説明

複数の SQL 文を指定した場合、トランザクションの原子性はサポートされません。

いいえ

なし

postSql

データ同期タスクが完了した後に実行される SQL 文。コードレス UI では、1 つの SQL 文しか実行できません。コードエディタでは、複数の SQL 文を実行できます。たとえば、タイムスタンプを追加できます:ALTER TABLE tablename ADD colname TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

いいえ

なし

batchSize

1 つのバッチでコミットするレコード数。値を大きくすると、データ同期システムとデータソース間のネットワーク対話の回数が大幅に減少し、全体的なスループットが向上します。この値が大きすぎると、データ同期プロセスでメモリ不足 (OOM) エラーが発生する可能性があります。

いいえ

1024